구현시 알고리즘 중 하나를 사용해야하는 알고리즘이 있습니까?
거의 확실하지 않습니다. (사실, 이론적 인 관점에서, 당신은. / 기타있는 java.util.concurrent를 사용하여 통지 시뮬레이션 대기 할 수 있어야 . 당신이 잠금 해제에주의해야하지만 ... 클래스. 그리고 명시 적으로 잠금 작업으로 대체 될 수 동기화 finally
조항.)
그러나 Java에서 최상의 성능을 구현하려면 대기 및 알림 여부와 상관없이 동기화 된 직접 사용과 관련된 알고리즘 이 있을 수 있습니다.
동기화, 대기 및 알림 사용을 중단해야 할 때입니까?
이전 질문에 대한 답에 관계없이 대답은 확실히 아니오입니다.
대기 / 알림은 올바르게 사용될 수 있습니다 (그리고 종종 사용됩니다). Java에서는 폐기 된 클래스 및 메소드에 대해 더 이상 사용되지 않습니다. 즉, 지속적인 사용이 시급한 문제로 수정되어야하는 경우. Sun (및 현재 Oracle)이 기본적으로 사용되지 않고 대기 / 알림만큼 널리 사용된다면 막대한 양의 레거시 코드에 심각한 호환성 문제가 발생할 수 있습니다. 그것은 누군가의 관심사가 아닙니다.
코드에서 동기화 / 대기 / 알림을 제거하려면 괜찮습니다. 그러나 더 이상 사용되지 않을 경우 본질적으로 올바른 멀티 스레드 코드를 대량으로 다시 작성해야하므로 BAD IDEA가 될 것입니다. 기업 IT 관리자와 소프트웨어 제품 관리자는 그것을 제안하는 당신을 미워할 것입니다 ...
Java 문서에 따라 "더 이상 사용되지 않음"의 의미를 읽을 가치가 있습니다. http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html
또한 Java의 핵심 요소 인 더 이상 사용되지 않는 것에 대해 이야기하고 있습니다. 사용 중단 synchronized
은 큰 결과를 초래합니다.