protected synchronized boolean isTimeoutOccured(Duration timeoutDuration) {
DateTime now = new DateTime();
if (timeoutOccured == false) {
if (new Duration(requestTime.getMillis(), now.getMillis()).compareTo(timeoutDuration) > 0) {
timeoutOccured = true;
}
}
return timeoutOccured;
}
protected boolean isTimeoutOccured2(Duration timeoutDuration) {
return atomicTimeOut.compareAndSet(false, new Duration(requestTime.getMillis(), new DateTime().getMillis()).compareTo(timeoutDuration) > 0);
}
2
A
답변
1
그것은 부울 표현
new Duration(requestTime.getMillis(), new DateTime().getMillis()).compareTo(timeoutDuration) > 0
첫 번째 예에서 동기화 된 블록 내부에 있음을 주목할 필요가 있지만 두 번째의 모든 메모리 장벽의 외부. (두 번째 예제에서 표현식의 결과는 atomic compareAndSet 호출에 대한 인수로 전달되지만 표현식 자체의 평가는 메모리 장벽 외부에서 발생합니다.)
따라서 답변은 thread- 그 다른 클래스들 (Duration, DateTime)은 안전합니다. 이것들이 JodaTime 클래스라고 가정하고, javadoc을 잠깐 살펴보면이 클래스가 스레드 안전하고 변경 불가능한 인스턴스를 생성한다는 것을 알 수 있습니다. 따라서 출력은 항상 같아야합니다.
사실,이 계산의 모든 구성 부분이 불변 (모든 DateTime 및 Duration의 인스턴스)이므로, 동기화 또는 원자 compareAndSet을 전혀 사용하지 않아야합니다.
2
예, 원자 기본 요소가 더 효율적입니다.
관련 문제
- 1. System.Data.DataTableExtensions의 CopyToDataTable 메서드는 어떻게 사용합니까?
- 2. 이 메서드는 스레드로부터 안전합니까?
- 3. 이 메서드는 스레드로부터 안전합니까?
- 4. 이 메서드는 무엇입니까 System.Web.Mvc.MvcHandler.ProcessAsyncRequest()?
- 5. ConfigurationSettings.AppSettings -이 메서드는 쓸모없는 오류입니다.
- 6. System.out.println -이 메서드는 Java에서 연결됩니까?
- 7. .NET FormsAuthentication.Encrypt() 메서드는 어떤 암호화 방법을 사용합니까?
- 8. 데이터베이스 계층에서 멤버쉽 메서드는 어떻게 사용합니까?
- 9. .NET의 Array.Sort() 메서드는 어떤 정렬 알고리즘을 사용합니까?
- 10. redirecttoaction이 동일한 서버를 사용합니까?
- 11. method1과 method2 메서드는 동일한 SOAPAction을 사용합니다.
- 12. xx 및 yy 메서드는 동일한 SOAPAction을 사용합니다.
- 13. 다른 명령에서 awk의 출력을 어떻게 사용합니까?
- 14. 이 MVC를 부적절하게 사용합니까?
- 15. 이 LINQ 동적 orderby 메서드는 스레드로부터 안전합니까?
- 16. 이 두 가지 VB 메서드는 기능면에서 동일합니까?
- 17. 동일한 쿼리는 다른 인덱스를 사용합니까?
- 18. 다른 클래스에서 인스턴스화 된 객체의 메서드는 어떻게 사용합니까?
- 19. 동일한 루프가 다른 출력을 제공합니다. 자바 IO
- 20. SharePoint 복사 웹 서비스의 CopyIntoItems 메서드는 어떻게 사용합니까?
- 21. MD5 알고리즘은 항상 동일한 문자열에 대해 동일한 출력을 생성합니까?
- 22. 이 github URL을 어떻게 사용합니까?
- 23. 이 Ruby 코드는 어떻게 사용합니까?
- 24. 이 함수는 꼬리 재귀를 사용합니까?
- 25. 이 동일한 CSS 선택자입니까?
- 26. 이 데모는 어떤 혜성 기술을 사용합니까?
- 27. 정의 된 동일한 문장에서 변수를 사용합니까?
- 28. 여러 wx.TextCtrls에 대해 동일한 핸들러를 사용합니까?
- 29. 이 C++ 함수는 어떻게 memoization을 사용합니까?
- 30. FindControl 메서드는