作者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
1F:推 LaPass:我正想问... 你的synchronized到底想锁住什麽东西? 08/27 00:04
2F:→ darkk6:锁 this 就好了吧... ? 08/27 00:29
3F:→ po500922:锁this应该就可以了= =a不好意思对这个没有很熟, 08/27 16:27