왜 자물쇠가 그렇게 많이 필요한가요? 서로 다른 잠금은 서로 다른 리소스를 차지하므로 모든 것이 더 적은 리소스를 사용하고 프로그램 실행 속도를 높이도록 설계되었습니다.
첫 번째 질문입니다. 편향된 잠금: 이전 연구를 통해 Hotspot의 저자는 대부분의 경우 잠금에 대한 다중 스레드 경쟁이 없을 뿐만 아니라 비용을 벌기 위해 항상 동일한 스레드에 의해 여러 번 획득된다는 사실을 발견했습니다. 더 낮은 잠금을 획득하는 스레드, 편향된 잠금이 도입되었습니다. 하나의 스레드가 동기화된 코드 블록에 액세스하는 시나리오에 적합합니다.
경량 잠금: 경쟁이 그다지 치열하지 않거나 동기화된 코드 블록이 빠르게 실행되는 시나리오에 사용됩니다. (몇번을 돌려도 아직 자물쇠를 얻지 못하고 헤비급 자물쇠로 업그레이드 했습니다.)
두 번째 문제는 경량 잠금 장치가 여러 번 회전(회전은 사이클로 이해될 수 있음) 후에도 잠금 장치를 획득하지 못하고 스레드 수에 관계없이 확장된다는 것입니다.
왜 자물쇠가 그렇게 많이 필요한가요? 서로 다른 잠금은 서로 다른 리소스를 차지하므로 모든 것이 더 적은 리소스를 사용하고 프로그램 실행 속도를 높이도록 설계되었습니다.
첫 번째 질문입니다.
편향된 잠금: 이전 연구를 통해 Hotspot의 저자는 대부분의 경우 잠금에 대한 다중 스레드 경쟁이 없을 뿐만 아니라 비용을 벌기 위해 항상 동일한 스레드에 의해 여러 번 획득된다는 사실을 발견했습니다. 더 낮은 잠금을 획득하는 스레드, 편향된 잠금이 도입되었습니다. 하나의 스레드가 동기화된 코드 블록에 액세스하는 시나리오에 적합합니다.
경량 잠금: 경쟁이 그다지 치열하지 않거나 동기화된 코드 블록이 빠르게 실행되는 시나리오에 사용됩니다. (몇번을 돌려도 아직 자물쇠를 얻지 못하고 헤비급 자물쇠로 업그레이드 했습니다.)
두 번째 문제는 경량 잠금 장치가 여러 번 회전(회전은 사이클로 이해될 수 있음) 후에도 잠금 장치를 획득하지 못하고 스레드 수에 관계없이 확장된다는 것입니다.
위 내용은 제 개인적인 이해이므로 Infoq의 해당 글을 참고해주세요.