우리가이 두 샘플 코드가 있다고 가정하자 지금?동기 (이)와 동기화 방법의 차이점은 무엇
답변
두 가지 다른 방법은 기능적으로 동일한 입니다. 바이트 코드 수준에서
, 메소드의 액세스 플래그 설정 비트 등의 동기화에 대한 필요성을 알리는 동기화 방법 : 은 아주 작은 성능 차이가있을 수 있습니다. JVM은이 비트 플래그를 찾고 적절히 동기화합니다.
동기화 된 블록은 클래스 파일의 메서드 정의에 저장된 바이트 코드 작업 시퀀스를 통해 동기화를 구현합니다.
따라서 동기화 된 방법 은이 잠재적으로 약간 더 빠르게 실행되고 바이트 코드 측면에서 공간을 적게 차지합니다.
다시 두 사양은 기능적으로 동일합니다.
나는 성능 차이가 미미하고 코드 스타일 가이드 라인이 승리해야한다고 생각합니다. 일부 컴파일러는 블록을 액세스 플래그로 최적화 할 수도 있습니다. JIT는 성능 차이를 해결할 수 있습니다.
한 가지 차이점은 동기화되는 코드의 세분성입니다. 첫 번째 예제에서는 본질적으로 전체 메서드를 잠그는 반면 두 번째 예제에서는 메서드의 섹션 만 잠글 것입니다. 두 번째 방법은 몸체를 완전히 동기화 할 필요가없는 긴 메서드에 더 좋습니다. 가능한 한 빨리 다른 스레드에 대한 잠금을 해제하고 해제해야 할 때만 잠금을 설정하는 것이 가장 좋습니다. 이 문서의이 부분 밖으로
그러나 위와 같이 예제에 따라'synchronized (this) '블록이 * 전체 본문 *을 둘러 쌉니까? 바이트 코드 생성 또는 모니터 객체에 차이가 있습니까? –
점검 :
http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/#4
는 설명이 기능적으로 합동 (인스턴스 개체 또는 정적 메소드의 클래스 객체의 경우에는 방법 중 잠금 장치를 동기화하는 동안 메소드가 상주하는 클래스)에서 메소드를 동기화하는 것이 (동기화 된 블록 명령문처럼) 바이트 코드에서 동기화하는 것이 아니라 JVM 레벨에서 동기화되기 때문에 훨씬 더 최적입니다.
+1. 마침내 정비사 세부 정보의 암시와 좋은 링크 (정확한 질문을 다루는 것)가 백업됩니다. –
대단히 감사합니다. – Tarik
- 1. 운영자와 방법의 차이점은 무엇입니까?
- 2. 이 초기화 방법의 차이점은 무엇입니까?
- 3. 자바 수입 혼란의 차이점은 무엇
- 4. 동기 API와 비동기 API의 차이점은 무엇입니까?
- 5. Java : 이러한 구성 방법의 차이점은 무엇입니까
- 6. C에서 문자열을 만드는 방법의 차이점은 무엇입니까?
- 7. 스크럼과 다른 애자일 방법의 차이점은 무엇입니까?
- 8. 양식을 표시하는 다음과 같은 방법의 차이점은 무엇입니까?
- 9. 데이터베이스를 삭제하는 두 가지 방법의 차이점은 무엇입니까?
- 10. Wicket에서 다른 입력 방법의 차이점은 무엇입니까?
- 11. `ToXXXX`와`AsXXXX` 변환 방법의 차이점은 무엇입니까?
- 12. 프리즘에 모듈을로드하는 두 가지 방법의 차이점은 무엇입니까?
- 13. 프로세스를 죽이는 두 가지 방법의 차이점은 무엇입니까?
- 14. find_by_sql과 일반 레일 질의 방법의 차이점은 무엇입니까?
- 15. 선언적 레이블 선언의 차이점은 무엇입니까? 의 차이점은 무엇
- 16. 차이 [0] 다음을 사용하여 차이점은 무엇
- 17. 아약스 웹 서비스 아키텍처의 차이점은 무엇
- 18. 목표 - C 가져 오기의 차이점은 무엇
- 19. Extjs 아름다운 동기 팝업
- 20. 동기화 된 것과 동기화 된 것의 차이점은 무엇입니까?
- 21. PHP에서 확장을로드하는 방법의 차이점
- 22. 아약스 동기 콜백
- 23. 탭 전환 방법의 차이점
- 24. 스윙 창을 초기화 할 수있는 방법의 차이점은 무엇입니까?
- 25. 자바 스크립트에서 배열을 정의하는 이들 방법의 차이점은 무엇입니까?
- 26. VS2010에서 웹 서비스를 만드는 두 가지 방법의 차이점은 무엇입니까?
- 27. JavaScript에서 함수를 정의하는 두 가지 방법의 차이점은 무엇입니까?
- 28. JSON 객체를 반환하는 두 가지 방법의 차이점은 무엇입니까?
- 29. 이러한 방법과 NULL을 올바르게 검사하는 방법의 차이점은 무엇입니까?
- 30. Python IO 전문가 :이 두 방법의 차이점은 무엇입니까?
+1. 마침내 정비공 세부 사항의 암시 :-) –