标题: 生产者消费者问题 [打印本页] 作者: 请备注 时间: 2014-4-4 14:43 标题: 生产者消费者问题 class ProducerDemo
{
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;
1, 我的疑问是这个代码里是不是建了3个Resource对象。
2, Resource r = new Resource(); 把这个语句里的r换成res 有什么 区别,运行可以,我测试了。
3,如果把r换成了res,那么res对象是在new的时候初始化的还是在private的时候初始化的。作者: 一年_Hei 时间: 2014-4-4 15:00
1 肯定只建了一个Resource,这个例子就是为了多线程时确保资源的安全作者: 一年_Hei 时间: 2014-4-4 15:08
2 把r换成res对程序来说一样的,就想Person p = new Person(); Person person = new Person(); 一样,就是引用的名称不一样
3 这个肯定是new的时候初始化,Producer pro = new Producer(r);
Consumer con = new Consumer(r);
这里是把资源的引用传给了生存者和消费者,就相当于将一个对象作为参数传递一样,引用的还是同一个对象
Person p = new Person();
function(p);
public void function(Person p){
System.out.println(p);
}
作者: 请备注 时间: 2014-4-4 15:17
一年_Hei 发表于 2014-4-4 15:08
2 把r换成res对程序来说一样的,就想Person p = new Person(); Person person = new Person(); 一样,就是 ...