Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 为何Main Thread没有被notify?
jfml





发贴: 708
积分: 30
于 2003-06-03 16:15 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
程序如下:
public class ThreadTester
{
public static boolean flag = false;

public static void main(String[] args)
{
ThreadTester tt = new ThreadTester();

MonitorThread dpt = new MonitorThread();
WorkThread wpt = new WorkThread();

dpt.start();
wpt.start();

tt.pauseSelf();

tt.goOn();
}

public ThreadTester()
{
}

public void goOn()
{
  for (int i = 0; i < 10; i++)
{
System.out.println("OKay!");
}
}

public synchronized void pauseSelf()
{
try
{
System.out.println(
"Main Thread " + Thread.currentThread() + " waiting...");
wait();
System.out.println("Main Thread " + Thread.currentThread() + " go on...");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}

class WorkThread extends Thread
{
public void run()
{
System.out.println(
"Work Thread "
+ Thread.currentThread()
+ " changed flag's value to true!");
ThreadTester.flag = true;
}
}

class MonitorThread extends Thread
{
public void run()
{
while (!ThreadTester.flag)
{
System.out.println(
"MonitorThread " + Thread.currentThread() + " watching the flag!");
}

synchronized (this)
{
System.out.println(
"Monitor Thread "
+ Thread.currentThread()
+ " waking every waited thread!");
notifyAll();
}
}

运行结果如下:
Main Thread Thread[main,5,main] waiting...
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
MonitorThread Thread[Thread-1,5,main] watching the flag!
Work Thread Thread[Thread-2,5,main] changed flag's value to true!
MonitorThread Thread[Thread-1,5,main] watching the flag!
Monitor Thread Thread[Thread-1,5,main] waking every waited thread!

最后Main Thread并未被notify,请问原因何在呢,该如何修改

谢谢




话题树型展开
人气 标题 作者 字数 发贴时间
2239 为何Main Thread没有被notify? jfml 2540 2003-06-03 16:15
1697 Re:为何Main Thread没有被notify? fengyifan 469 2003-06-05 21:06

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923