[問題] thread wakeup
想要做出兩個thread
一個thread(A)在執行完一段程式後就先暫停
如果另一個thread(B)的某一個method被其他人調用到
就會喚醒thread(A)
程式碼如下
class A extends Thread{
public A(){
work();
wait();
}
public void work(){
/* 省略 **/
}
}
class B extends Thread{
public B(){
}
public void setNewState(){
notify();
}
}
一開始就之前的印象這樣寫
程式執行沒有錯誤
但是後來想想似乎需要做synchronized
才能使用
是這樣沒錯吧?
因此改成如下
class A extends Thread{
public A(){
work();
synchronized(obj){
wait();
}
}
public void work(){
/* 省略 **/
}
}
class B extends Thread{
public B(){
}
public void setNewState(){
synchronized(obj){
notify();
}
}
}
想要請問這樣寫法正確嗎??
另外若我許多個相同的threadA threadB,他們彼此一對一對
使用這個方法來喚醒對方
lock的物件(obj)應該要怎麼寫比較好呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.71.152
推
08/27 00:04, , 1F
08/27 00:04, 1F
→
08/27 00:29, , 2F
08/27 00:29, 2F
→
08/27 16:27, , 3F
08/27 16:27, 3F