我有一個線程,A
它有一個列表。列表包含一些對象。現在我想設計一個機制,我可以通過它發送一些消息給線程A
。兩個線程之間的通信
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