wait
,notify
およびnotifyAll
のメソッドはObject
に配置されていますが、いくつかの分離クラスではありません。なぜwait()とnotify()が特別なクラスに含まれていないのですか?
この質問は、Thread
クラスに移動することについてではありません。私はなぜ彼らがObject
を捨てているのか疑問に思っています。新しいMonitor
クラスではありません。
私はそのアイデアの以下の欠点を参照してください。
- 私たちは、モニターとして私たちのために、他の目的のフィールドを使用することはできません。しかし、これはモジュール性の原則に合っているようです。
this
と<MyClass>.class
が有効なモニターにならないように、同期されたメソッドは、(クロージャのように)生成された隠しフィールドでいくつかのハックを必要とするようになりました。
私たちは少しの悲惨さですべてのオブジェクトから5つの方法を外すことができました。か否か?
「なぜ彼らはオブジェクトが新しいMonitorクラスではないのだろうか」と考えています。概念的には内部的に行いますが、モニターはオブジェクトごとに一意です。重複した回答を参照してください(たとえ 'Thread'を参照していますが) –
@biziclopまさに。 Per Brinch HansenがJavaの初期並行性構成を見たとき、彼は「明らかに私は無駄に努力しました」と書いています。彼らはUNIXの驚くべき 'sleep/wakeup()'内部から借りたようです。 – EJP
* "私たちは少しの悲しみですべてのオブジェクトから5つのメソッドを取り除くことができました" *技術的には、これらのメソッドは技術的に1回だけ存在し、インスタンスごとには1回しか存在しません。 – m0skit0