동기화된 키워드는 서로 다른 수준에서 사용할 수 있습니다. 이제 두 개의 서로 다른 스레드를 사용하여 카운터를 인쇄하는 두 가지 예제를 살펴보겠습니다. 스레드가 동기화되지 않으면 순서가 없는 카운터 값을 인쇄하지만 synchronized() 블록 내부에 배치하여 카운터를 인쇄할 때 두 스레드 모두에 대해 카운터를 순서대로 인쇄합니다. 다음은 sleep(5)으로 시뮬레이션된 장기 실행 작업에 대한 액세스를 제한하는 방법의 예입니다. 항상 전체 메서드를 동기화할 필요는 없습니다. 경우에 따라 메서드의 일부만 동기화하는 것이 좋습니다. Java 동기화 된 블록은 메서드 내부에서 이를 가능하게합니다. 동기화에 좋은 블로그 (그 문제에 대한 많은 주제)… 자바의 장난 꾸러기를 알고있어 … 당신에게 thanx :)당신의 좋은 일을 계속.

명예! 이 문서에서는 Java 및 Kotlin에서 제공하는 여러 동기화 및 스레드 안전 방법, 동시 유틸리티 및 교착 상태를 조사했습니다. 그러나 동기화는 둘 이상의 스레드가 동일한 리소스에 동시에 액세스하려고 시도하고 Java 런타임이 하나 이상의 스레드를 더 느리게 실행하거나 실행을 일시 중단하는 경우 발생하는 스레드 경합을 유발할 수 있습니다. 기아와 라이브록은 스레드 경합의 한 형태입니다. 자세한 내용은 라이브 섹션 섹션을 참조하십시오. 동기화 된 메서드에 대해 주의해야 할 한 가지는 동기화 된 개체와 아무 관련이없는 경우에도 전체 메서드에 대한 액세스가 제한된다는 것입니다. updateCounter가 많은 작업을 수행하는 함수이며 일부 시나리오에서는 실제로 카운터를 업데이트하는 시나리오를 상상해 보십시오. 동기화된 메서드를 사용하면 sharedCounter가 업데이트되지 않은 경우에도 이 메서드가 항상 동기화됩니다. 이 빠른 문서는 Java에서 동기화 된 블록을 사용하는 소개가 될 것입니다. 이 동기화는 모니터라는 개념으로 Java에서 구현됩니다.