2

2つの別々のスレッドが2つのオブジェクトを実行し、一方のスレッドがもう一方のスレッドから通知されるまでコードの実行を待機するプログラムを作成したいと思います。

これを行うために、Conditionインターフェイスを使用します。

両方のクラスがアクセスできるように、コード内の変数lockと変数を宣言する場所がわかりません。condition

私が聞きたいのは、スレッドがlockcondition変数をどのように共有して、それらが同じ条件でシグナリングおよび待機していることを確認するかということです。

4

1 に答える 1

2

これが機能するには、スレッドに何らかの接続が必要です。スレッド 1 がスレッド 2 への参照を持っている場合、ロック変数と条件変数はスレッド 2 にある可能性があり、その逆も同様です。

そうでない場合、変数は、両方のスレッドがアクセスできる別のクラスにある必要があります。そのため、そのクラスの同じインスタンスを両方のスレッドに渡して、そのインスタンスが共有リソースになるようにする必要があります。次の例では、クラスがThread1あり、引数としてThread2取るコンストラクターで Thread を拡張することを前提としています。SharedResource

SharedResource sr = new SharedResource();
Thread1 t1 = new Thread1(sr);
Thread2 t2 = new Thread2(sr);
t1.start();
t2.start();
于 2012-11-19T05:40:44.157 に答える