黑马程序员技术交流社区
标题:
线程等待唤醒问题
[打印本页]
作者:
linder_qzy
时间:
2015-3-11 11:05
标题:
线程等待唤醒问题
有个程序执行后不是想要的结果。想要2个线程交替运行,结果却是无序的执行,帮忙看看哪里出了问题
class Resource
{
String name;
String sex;
boolean flag = false;
}
class InPut implements Runnable
{
Resource res;
InPut(Resource res)
{
this.res = res;
}
public void run()
{
int x = 0;
while(true)
{
synchronized(res)
{
if(res.flag)
try
{
res.wait();
}
catch (Exception e)
{
}
if(x==0)
{
res.name = "老王";
res.sex = "男";
}
else
{
res.name = "小张";
res.sex = "女";
}
x=(x+1)%2;
res.flag = true;
res.notify();
}
}
}
}
class OutPut implements Runnable
{
Resource res;
OutPut(Resource res)
{
this.res = res;
}
public void run()
{
while(true)
{
synchronized(res)
{
if(!res.flag)
try
{
this.wait();
}
catch (Exception e)
{
}
System.out.println(res.name+"----->"+res.sex);
res.flag = false;
res.notify();
}
}
}
}
class InOutWaitNotifyDemo
{
public static void main(String[] args)
{
Resource res = new Resource();
InPut in = new InPut(res);
OutPut out = new OutPut(res);
Thread t1 = new Thread(in);
Thread t2 = new Thread(out);
t1.start();
t2.start();
}
}
/*运行结果
* 小张----->女
老王----->男
小张----->女
小张----->女
老王----->男
小张----->女
老王----->男
老王----->男
小张----->女
。。。
* */
作者:
杨强彪
时间:
2015-3-11 12:18
file:///C:\Documents and Settings\杨强彪\Application Data\Tencent\Users\843568639\QQ\WinTemp\RichOle\RYDOTAI13~`M6MNZ25{L~UI.png你加两个睡眠机制 一个1000毫秒 一个500毫秒试试 错开时间
RYDOTAI13~`M6MNZ25{L~UI.png
(3.05 KB, 下载次数: 2)
下载附件
2015-3-11 12:17 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2