질문에 따르면 ConcurrentHashMap과 같은 고성능 클래스의 구체적인 비즈니스 사용 시나리오는 무엇입니까?
HashMap은 보통 우리가 코드를 작성할 때 가장 많이 사용하고 익숙해져 있습니다
하지만 자바에는 다른 고성능 맵도 있는데 평소에는 잘 사용하지 않는 것 같아요
바이두에서 검색해보니 HashMap과 ConcurrentHashMap의 차이만 보이더라구요
하지만 어떤 특정 비즈니스 사용 시나리오에서 이러한 클래스를 사용할지는 모르겠습니다
그래서 좀 헷갈리는데 선배님들께서 지도 좀 해주셨으면 좋겠습니다. 감사합니다
ConcurrentHashMap은 동시성을 방지하기 위한 java.util.concurrent 패키지 아래의 도구 클래스입니다. 비즈니스 용도의 경우 자체 동시성 클래스에서 ThreadLocal을 구현할 수도 있습니다. . .
주로 멀티스레딩에서 사용됩니다. 이전 버전의 Java에서는 동기화된 동기화 블록을 사용했는데 이는 잠금 및 해제와 같은 문제를 해결하기가 쉽지 않았습니다. 이제 모든 것이 공식적으로 Java로 작성되었으므로 멀티스레딩을 살펴보세요. . .
예를 들어 비즈니스 시나리오에서 회사의 인사 정보는 다중 스레드 데이터베이스에 저장됩니다. java.util.List를 사용하면 각 스레드의 데이터가 일치하지 않습니다. 이 경우 동시성 도구 클래스를 사용해야 합니다. . 주목해야 할 가장 중요한 점은
写
데이터를 읽을 때 중요하지 않다는 것입니다. . .ConcurrentHashMap은 다중 스레드에서 액세스할 수 있도록 특별히 설계되었습니다. 예:
으아악동시에 로그인 및 로그아웃하는 사용자가 많으면
onUserSignIn()
和onUserSignOut()
동시에 호출되는 스레드가 많아집니다.초대해주셔서 감사합니다.
먼저 알아야 할 사항:
여러 스레드에서 보호되지 않은 개체에 대한 작업을 수행하면 모든 사람에게 일관되지 않은 상태가 발생하게 됩니다.
내부 요소가 특정 요구 사항을 충족하거나 특정 숫자보다 크거나 같은 특정 조건 하에서 일반 hashMap을 추가하고 제거하기 위해 여러 스레드를 열 수 있습니다.
ConcurrentHashMap
은 jdk 동시성 패키지에서 제공하는 동시성 맵으로, 여러 스레드가 객체를 실행할 때 객체 복사 불일치를 효과적으로 방지할 수 있습니다.바이두에서 해당 장면을 검색하실 수 있습니다.
차이점은 말할 필요도 없겠죠.
스레드 안전성을 보장하기 위해 일반적으로 ConcurrentHashMap을 사용하면 더 이상 번거로운 동기화 방법을 사용할 필요가 없습니다. 또한 ConcurrentHashMap은 일반적으로 멀티 스레드 상황에서 사용됩니다. 모든 멀티 스레드가 이 동시성 도구 클래스를 사용할 수 있는 것은 아닙니다.