멀티스레드 동기화 예제

흥미로운 기사. 제목은 동기화가 어떻게 작동하는지 알려줍니다. 대신 동기화를 사용하는 방법만 알려줍니다. 실망… 다음은 sleep(5)으로 시뮬레이션된 장기 실행 작업에 대한 액세스를 제한하는 방법 예제입니다(5): 예를 들어, 두 개의 서로 다른 스레드 T1과 T2가 있다고 가정해 보겠습니다. T1이 반환됩니다. 한편 T2가 시작되고 T1이 반환되기 전에 T2는 파일 임시.txt(임시.txt는 공유 리소스)에 T1에 저장된 값을 변경합니다. 이제 분명히 T1은 잘못된 결과를 반환합니다. double checked 잠금 코드가 null 포인터 예외를 throw하는 이유를 이해하지 않습니다. 코드는 여기에 http://javarevisited.blogspot.sg/2011/06/volatile-keyword-java-example-tutorial.html 감사 skplife, 다행 당신은 책을 좋아, 멀티 스레딩에 대한 연습에서 효과적인 자바와 자바 동시성 및 동기화는 모든 자바 개발자를 위해 읽어야합니다. @Anonymous Java에서 동기화는 교착 상태와 같은 문제를 피하기 위해 공유 리소스의 제어된 액세스를 허용하는 것을 의미합니다.

java는 하이 엔드 멀티 코어 프로세서의 이점을 누릴 수있는 고성능 동시 프로그램을 작성할 수있는 기능을 제공하는 다중 스레드 언어입니다. 동기화된 키워드와 휘발성 키워드를 사용하여 java에서 동기화를 수행할 수 있습니다. 이 자습서를 읽으면 자바에서 동기화 된 블록 및 동기화 된 방법을 사용하는 예제를 볼 수 있습니다. 다음은 카운터 값을 순서대로 인쇄하거나 인쇄하지 않을 수 있는 간단한 예제이며, 이를 실행할 때마다 스레드에 대한 CPU 가용성에 따라 다른 결과를 생성합니다. 메모리 나 파일과 같은 전역 상태에 액세스하는 함수에는 재진입 문제가 있습니다. 이러한 함수는 스레드에서 제공하는 적절한 동기화 메커니즘을 사용하여 전역 상태 사용을 보호해야 합니다. 이 동기화는 모니터라는 개념으로 Java에서 구현됩니다. 지정된 시간에 하나의 스레드만 모니터를 소유할 수 있습니다. 스레드가 잠금을 획득하면 모니터에 들어간 것으로 전해드립니다. 잠긴 모니터에 들어가려는 다른 모든 스레드는 첫 번째 스레드가 모니터를 종료할 때까지 일시 중단됩니다. 스레드 동기화 상호 배타적 및 스레드 간 통신에는 두 가지 유형이 있습니다. 위의 예제에서는 ThreadedSend 클래스의 run() 메서드 내에서 Sender 개체를 동기화 하도록 선택했습니다.

또는 전체 send() 블록을 동기화된 것으로 정의할 수 있으며 동일한 결과를 생성할 수 있습니다. 그런 다음 ThreadedSend 클래스의 run() 메서드 내에서 메시지 개체를 동기화할 필요가 없습니다. 여기서 objectidentifier는 동기화된 문이 나타내는 모니터와 잠금이 연관된 개체에 대한 참조입니다. 이제 두 개의 서로 다른 스레드를 사용하여 카운터를 인쇄하는 두 가지 예제를 살펴보겠습니다. 스레드가 동기화되지 않으면 순서가 없는 카운터 값을 인쇄하지만 synchronized() 블록 내부에 배치하여 카운터를 인쇄할 때 두 스레드 모두에 대해 카운터를 순서대로 인쇄합니다. 스레드 동기화에 대한 자세한 설명을 제공 해 주셔서 감사합니다. 가능하면, 대기의 유용성을 표시하여 문서를 확장하십시오(), notify(), notifyAll() 메서드 동기화. “Java에서 동기화된 키워드의 중요 점” #19 `Java에서 동기화된 블록에서 최종이 아닌 필드에서 동기화하지 마십시오` 예제에서 “Java에서 동기화된 키워드의 중요 지점” 섹션에서는 기본적으로 String 클래스 개체가 최종이 아닙니다.

다행히 Java는 동기화된 키워드를 통해 초창기부터 스레드 동기화를 지원합니다.

Dette indlæg blev udgivet i Ikke-kategoriseret af admin. Bogmærk permalinket.

Der er lukket for kommentarer.