黑马程序员技术交流社区
标题:
帮忙检查一下代码错误,自己实在看不出来了
[打印本页]
作者:
王春晓
时间:
2013-4-15 10:25
标题:
帮忙检查一下代码错误,自己实在看不出来了
本帖最后由 王春晓 于 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 个错误
照着毕老师的视频写的(多线程(线程间通信-生产者消费者)),写完报错,返回看了两三遍都没看出错误在哪。
麻烦大神们帮忙查下错,顺便说明一下报错原因,谢谢了!
作者:
高新星
时间:
2013-4-15 10:37
class Resource
{
private String name;
private int count = 1;
private boolean flag = false;
synchronized void set(String name) [color=Red]//这里不能被private修饰;被private修饰后只能在本类中使用有效[/color]
{
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();
}
}
复制代码
作者:
吴林飞
时间:
2013-4-15 10:49
Resource中的set方法没有暴露出去,把Private改成Public就行了
作者:
王春晓
时间:
2013-4-15 10:53
高新星 发表于 2013-4-15 10:37
明白了,谢谢!这里是因为我写代码的时候疏忽,而且自己还不太懂判断错误原因,把控不了太多的内容。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2