שעון עולמי --> atomicinteger 예제

atomicinteger 예제

השעה ב

다음은 맵의 값만을 검색하는 또 다른 예입니다. 차이점은 첫 번째 값이 이전 값을 반환하고 두 번째 값은 새 값을 반환한다는 것입니다. updateFunction 표준 보다 더 복잡 한 "비교 및 설정" 작업을 수행 하기 위해 구현 될 수 있습니다. 예를 들어 원자성 카운터가 0 이하로 떨어지지 않고 일반적으로 동기화가 필요하며 여기서 코드가 잠금이 없는지 확인할 수 있습니다. 이것은 자바의 AtomicInteger 클래스를 사용하는 방법의 예입니다. java.util.concurrent.atomic 패키지는 단일 변수에서 잠금 이없는 스레드 안전 프로그래밍을 지원하는 매우 유용한 클래스를 제공합니다. 그 중 AtomicInteger 클래스는 원자적으로 업데이트할 수 있는 int 값에 대한 래퍼 클래스입니다. 클래스는 유용한 메서드를 제공하며, 그 중 일부는 아래 코드 조각에 표시됩니다. 다음은 실제로 브라이언 괴에츠의 자바 동시성에서 비 차단 난수 생성기의 예입니다 : 이것은 자바의 AtomicInteger 클래스의 예입니다. 단순히 난 당신이 원자에 대해 위에서 제안 한 프로그램을 수정할 수 있지만 두 경우 모두 동일한 결과를 얻고 있기 때문에 나는이 원자 변수의 어떤 이점을 본 적이 없다. 그래서 당신은 정확히 무엇인지 확인하기 위해 같은에 대한 또 다른 예를 제공 하시기 바랍니다 수 있습니다.. 이제 몇 가지 예에 대한 원자 클래스 중 하나를 선택하자 : AtomicInteger 더 복잡한 동기화가없는 논리는 낙관적 잠금의 유형으로 compareAndSet ()를 사용하여 사용할 수 있습니다 – 현재 값을 얻고, 이에 따라 결과를 계산하고, 이 결과를 iff 값을 설정하십시오. 여전히 계산을 수행하는 데 사용되는 입력입니다, 다른 다시 시작 – 그러나 계산 예제는 매우 유용하고, 나는 종종 여러 스레드가 참여하는 힌트가있는 경우, 포함하고 있는 여러 스레드의 힌트가있는 경우 아토믹 인테거를 사용하고 VM 넓은 고유 생성기를 사용합니다, 그들은 너무 쉽게하기 때문에 나는 거의 일반 ints를 사용하는 조기 최적화를 고려할 것입니다.

예제를 실행하면 두 스레드가 AtomicInteger 변수를 원자적으로 업데이트할 수 있음을 알 수 있습니다. 예를 들어 일부 클래스의 인스턴스를 생성하는 라이브러리가 있습니다. 이러한 각 인스턴스에는 서버에 전송되는 명령을 나타내므로 이러한 각 인스턴스에는 고유한 정수 ID가 있어야 하며 각 명령에는 고유 ID가 있어야 합니다. 여러 스레드가 동시에 명령을 보낼 수 있기 때문에 AtomicInteger를 사용하여 해당 ID를 생성합니다. 다른 방법은 일종의 잠금 및 일반 정수를 사용하는 것이지만 느리고 덜 우아합니다. 나는 "5,6,7,8"가는 카운트 값이 첫 번째 예에서 완벽하게 받아 들일 수 있다고 생각합니까? 이러한 모든 메서드는 parallelism임계값이라는 일반적인 첫 번째 인수를 사용합니다. 이 임계값은 작업을 병렬로 실행해야 하는 최소 컬렉션 크기를 나타냅니다. 예를 들어, 임계값 500을 통과하고 맵의 실제 크기가 499인 경우 작업은 단일 스레드에서 순차적으로 수행됩니다.

סימול מדינה סימול איזור איזור זמן שעון חורף\קיץ
שעון חורף
טפסים ביטוח לאומי,מס הכנסה