作者po500922 (我不知道)
看板java
標題[問題] thread wakeup
時間Wed Aug 24 11:37:48 2011
想要做出兩個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
推 LaPass:我正想問... 你的synchronized到底想鎖住什麼東西? 08/27 00:04
→ darkk6:鎖 this 就好了吧... ? 08/27 00:29
→ po500922:鎖this應該就可以了= =a不好意思對這個沒有很熟, 08/27 16:27