黑马程序员技术交流社区
标题:
能帮我看下这个程序出错在哪了么?
[打印本页]
作者:
sven556677
时间:
2015-8-19 11:34
标题:
能帮我看下这个程序出错在哪了么?
多线程的单个生产者/消费者
package com.cn.test;
class Person{
private String name;
private String gender;
private boolean flag=false;
public synchronized void set(String name,String gender){
if(flag){try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
this.name=name;this.gender=gender;
flag=true;
this.notifyAll();
}
}
public synchronized void get(){
if(!flag){try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
System.out.println("姓名"+this.name+"性别"+this.gender);
flag=false;
this.notifyAll();
}
}
}
class Input implements Runnable{
Person p;
Input(Person p){this.p=p;}
public void run() {
int x=0;//-------------------循环存
while(true){
if(x==0){
p.set("zhangsan", "nan");
}
else p.set("XIAOHONG", "NV");
x=(x+1)%2;
}
}
}
class Output implements Runnable{
Person p;
Output(Person p){this.p=p;}
public void run() {
while(true){
p.get();
}
}
}
public class MutilpDemo {
public static void main(String[] args) {
Person p=new Person();
Input in=new Input(p);
Output out=new Output(p);
Thread t1=new Thread(in);
Thread t2=new Thread(out);
t1.start();
t2.start();
}
}
复制代码
作者:
sven556677
时间:
2015-8-19 11:52
搞好了,if里面的try catch大括号打错了
作者:
l_15562009298
时间:
2015-8-19 12:53
仔细对比一下
作者:
l_15562009298
时间:
2015-8-19 12:59
public synchronized void set(String name,String gender){
if(!flag){
this.name=name;this.gender=gender;
flag=true;
this.notify();
try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
}
}
public synchronized void get(){
if(flag){
System.out.println("姓名"+this.name+"性别"+this.gender);
flag=false;
this.notify();
try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2