私はスレッドを持っています、A
にはリストがあります。リストにはいくつかのオブジェクトがあります。今私はスレッドA
に何らかのメッセージを送ることができるメカニズムを設計したいと思う。2つのスレッド間の通信
Thread A
はループして実行されます(待機したりスリープしません)。 その他のスレッドB
は、スレッドA
にメッセージを送信し、スレッドA
はすべてのキューを空にします。
スレッド間でメッセージを送信するにはどうすればよいですか?
class A extends Thread {
List<Object> objs = something; //Init it
void run() {
while(true) {
//Body which works on objects.
//After receiving an external message, "A" should perform some action, for example, empty objects.
}
}
}
編集: このようにすることはできますか?
class A extends Thread {
List<Object> objs = something; //Init it
Boolean flag = false;
public void setFlag(boolean value) {
synchronized(flag) {
this.flag = value;
}
}
public void getFlag() {
synchronized(flag) {
return this.flag;
}
}
void run() {
while(true) {
//Body which works on objects.
//After receiving an external message, A should perform some action, for example, empty objects.
if (getFlag == true)
//Empty list
}
}
}
Javaでは、通常はスレッド間でメッセージを送信しませんが、同期オブジェクトを使用してスレッド間で値を渡します。 – toto2
私の新しい編集でメソードされたインスタンス変数を同期しましたが、それは動作しますか? – akshay
@akshay編集はOKです( 'if(getFlag()== true)'を除く)。 – toto2