차례:
정의-스레드 동기화 란 무엇입니까?
스레드 동기화는 중요한 리소스를 공유하는 둘 이상의 스레드를 동시에 실행하는 것입니다. 중요한 리소스 사용 충돌을 피하려면 스레드를 동기화해야합니다. 그렇지 않으면 병렬 실행 스레드가 공통 변수를 동시에 수정하려고 할 때 충돌이 발생할 수 있습니다.
Techopedia는 스레드 동기화를 설명합니다
스레드 동기화를 명확히하려면 다음 예제를 고려하십시오. 세 개의 스레드 (A, B 및 C)가 동시에 실행되고 중요한 리소스 Z에 액세스해야합니다. Z에 액세스 할 때 충돌을 피하려면 스레드 A, B 및 C를 동기화해야합니다 . 따라서 A가 Z에 액세스하고 B도 Z에 액세스하려고 할 때 A의 작동이 끝나고 Z에서 나올 때까지 보안 조치를 통해 B의 Z 액세스를 피해야합니다.
Java에서는 스레드 간섭 및 메모리 일관성 오류를 방지하기 위해 두 가지 동기화 전략이 사용됩니다.
- 동기화 된 메소드 : 선언에 동기화 된 키워드를 포함시킵니다. 스레드가 동기화 된 메소드를 호출하면 동기화 된 메소드는 자동으로 해당 메소드의 오브젝트에 대한 고유 잠금을 획득하고, 리턴되지 않은 예외로 인해 리턴 된 경우에도 메소드가 리턴 할 때 해제합니다.
- 동기화 된 문장 : 동기화 될 코드 블록을 선언합니다. 동기화 된 메소드와 달리, 동기화 된 명령문은 고유 잠금을 제공하는 오브젝트를 지정해야합니다. 이 명령문은 불필요한 블로킹을 피할 수 있으므로 세분화 된 동기화로 동시성을 개선하는 데 유용합니다.