作者smfy (光波记忆)
看板java
标题[问题] 先notify再wait是否可以跳过wait
时间Fri Aug 24 23:29:38 2012
小弟是从vc转过来学java的
所以这问题可能有点奇怪
就是是否能先执行notify後
再遇到wait时就跳过
(类似vc里面setevent和waitforsingleobject的情况)
测试码如下,谢谢。
先开一个thread执行notify
自己sleep 3秒再wait
但无法结束程式
是否要用另外一个变数去存有没有notify过呢
感谢。
----------------------------------------------
public class NotifyTest {
public static Object g_obj = null;
public static void main(String[] args) {
g_obj = new Object();
notifyThread nt = new notifyThread();
System.out.println("Sleep...");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println("Wait...");
synchronized (g_obj) {
try {
g_obj.wait();
} catch (InterruptedException e) {
}
}
System.out.println("End...");
}
private static class notifyThread extends Thread{
notifyThread() {
start();
}
public void run() {
synchronized (g_obj) {
g_obj.notifyAll();
System.out.println("Notify...");
}
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.254.2.140
1F:→ qrtt1:vc 不是语言.... 08/25 00:32
2F:→ bitlife:原po似乎想要counting semaphore.notify/wait比较像binary 08/25 12:10
3F:→ bitlife:semaphore. 可直接使用java的semaphore 08/25 12:12
4F:→ joyolkreg:增加 boolean isDone, 在同步区块变更就可以了 09/05 08:45