黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
学习代码
时间:
2014-3-16 10:12
标题:
多线程问题
class Demo1
{
String name;
String sex;
boolean flag=false;
}
class Input implements Runnable
{
private Demo1 e;
Input(Demo1 e)
{
this.e=e;
}
public void run()
{ int a=0;
while(true)
{ synchronized(e)
{
if(e.flag)
{ try{e.wait();}catch(Exception e){}
if(a==0)
{
e.name="zhangsan";
e.sex="man";
}
else
{
e.name="丽丽";
e.sex="女女女女女";
}
a = (a+1)%2;
e.flag=true;
e.notify();
}
}
}
}
}
class Output implements Runnable
{
private Demo1 e;
Output(Demo1 e)
{
this.e=e;
}
public void run()
{
while(true)
{ synchronized(e)
{ if(!e.+flag)
{ try{e.wait();}catch(Exception e){}
System.out.println(e.name+";;;;"+e.sex);
e.flag=false;
e.notify();
}
}
}
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 e = new Demo1();
Input in = new Input(e);
Output out = new Output(e);
Thread t = new Thread(in);
Thread t1 = new Thread(out);
t.start();
t1.start();
}
}
复制代码
作者:
梦里花-静
时间:
2014-3-16 10:27
:L什么问题啊 请指明
作者:
学习代码
时间:
2014-3-16 10:47
梦里花-静 发表于 2014-3-16 10:27
什么问题啊 请指明
头都被弄乱了 问题都没写 实在抱歉 我就是想问一下 为什么 不出结果呢
作者:
梦里花-静
时间:
2014-3-16 11:19
class Demo1
{
String name;
String sex;
boolean flag=false;
}
class Input implements Runnable
{
private Demo1 e;
Input(Demo1 e)
{
this.e=e;
}
public void run()
{ int a=0;
while(true)
{ synchronized(e)
{
if(e.flag)
try{e.wait();}catch(Exception e){}
if(a==0)
{
e.name="zhangsan";
e.sex="man";
}
else
{
e.name="丽丽";
e.sex="女女女女女";
}
a = (a+1)%2;
e.flag=true;
e.notify();
}
}
}
}
class Output implements Runnable
{
private Demo1 e;
Output(Demo1 e)
{
this.e=e;
}
public void run()
{
while(true)
{ synchronized(e)
{ if(!e.flag)
try{e.wait();}catch(Exception e){}
System.out.println(e.name+";;;;"+e.sex);
e.flag=false;
e.notify();
}
}
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 e = new Demo1();
Input in = new Input(e);
Output out = new Output(e);
Thread t = new Thread(in);
Thread t1 = new Thread(out);
t.start();
t1.start();
}
}
复制代码
仔细看一下代码。
作者:
学习代码
时间:
2014-3-16 11:39
梦里花-静 发表于 2014-3-16 11:19
仔细看一下代码。
好的 谢谢 问题找到了
作者:
郝大龙0104
时间:
2014-3-16 11:55
52行 多了个加号 20 34 53 57 把那个大括号去掉
你编程出现的问题是 if(e.flag) if(!e.flag) 判断的范围不确定 这两个if主要是判断范围 只有 wait()方法 你的范围太大啦。。 你再看看毕老师的视频
作者:
一年_Hei
时间:
2014-3-16 12:11
多了一个输出里判断标记多了+
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2