本帖最后由 王春晓 于 2013-4-15 10:55 编辑
class ProducerConsumerDemo
{
public static void main(String[] args)
{
Resource r = new Resource();
Producer pro = new Producer(r);
Consumer con = new Consumer(r);
Thread t1 = new Thread(pro);
Thread t2 = new Thread(con);
t1.start();
t2.start();
}
}
class Resource
{
private String name;
private int count = 1;
private boolean flag = false;
private synchronized void set(String name)
{
if(flag)
try
{
wait();
}
catch (Exception e)
{
}
this.name = name+"--"+count++;
System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
flag = true;
this.notify();
}
public synchronized void out()
{
if(!flag)
try
{
wait();
}
catch (Exception e)
{
}
System.out.println(Thread.currentThread().getName()+"...消费者..."+this.name);
flag = false;
this.notify();
}
}
class Producer implements Runnable
{
private Resource res;
Producer(Resource res)
{
this.res = res;
}
public void run()
{
while(true)
{
res.set("商品");
}
}
}
class Consumer implements Runnable
{
private Resource res;
Consumer(Resource res)
{
this.res = res;
}
public void run()
{
while(true)
{
res.out();
}
}
}
报错:
ProducerConsumerDemo.java:73: 错误: set(String)可以在Resource中访问private
res.set("商品");
^
1 个错误
照着毕老师的视频写的(多线程(线程间通信-生产者消费者)),写完报错,返回看了两三遍都没看出错误在哪。
麻烦大神们帮忙查下错,顺便说明一下报错原因,谢谢了! |
|