毕老师有个多线程间通信 示例 消费者和生产 者
在主函数运行里面 调用时一段代码如下:
第一种写法:
Resource r = new Resource();
Product p = new Product(r);
Cutmor c = new Cutmor(r);
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
t1.start();
t2.start();
第二种写法:
Resource r = new Resource();
//Product p = new Product(r);
//Cutmor c = new Cutmor();
Thread t1 = new Thread(new Product(r));
Thread t2 = new Thread(new Cutmor(r));
t1.start();
t2.start();
第三种写法:
//Resource r = new Resource();
//Product p = new Product(r);
//Cutmor c = new Cutmor(new Product(r));
Thread t1 = new Thread(new Product(new Resource()));
Thread t2 = new Thread(new Cutmor(new Resource()));
t1.start();
t2.start();
求这三种写法,结果一样?不一样的话,哪两种写法不一样,求详解~~
一样的。就好像说
int i=5;
System.out.println(i);
这i其它地方也没用它,直接套在一起System.out.println(5);这样简洁些作者: 王少雷 时间: 2012-12-30 17:10
马志军 发表于 2012-12-30 17:05
一样的。就好像说
int i=5;
System.out.println(i);
纳尼?是么?我怎么越感觉越不一样。作者: 马志军 时间: 2012-12-30 17:14
王少雷 发表于 2012-12-30 17:10
纳尼?是么?我怎么越感觉越不一样。
Product p = new Product(r);
把r换成r所表示的对象Resource r = new Resource();
Product p = new Product(new Resource());
Thread t1 = new Thread(p);
把括号中p再用p后面那个代入
Thread t1 = new Thread(new Product(new Resource()));
就直接成这样了,一步到位,方便 作者: 王少雷 时间: 2012-12-30 17:16
马志军 发表于 2012-12-30 17:14
Product p = new Product(r);
把r换成r所表示的对象Resource r = new Resource();
Product p = new Produ ...
哦,第二种注释错了。没看到。呵呵。
第三种 为什么是两个资源。作者: 谢毅 时间: 2012-12-30 17:37
Thread t1 = new Thread(new Product(new Resource()));其实是堆与堆的通信,堆是一个运行时数据区,要在运行时动态分配内存,存取速度较慢。
Resource r = new Resource();
Product p = new Product(r);
Cutmor c = new Cutmor(r);
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
是栈与堆的通信,栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。作者: 郭娇珍 时间: 2012-12-30 17:45