黑马程序员技术交流社区

标题: 实现Runnable接口创建多线程问题 [打印本页]

作者: 北极£莜蓝    时间: 2014-7-2 17:58
标题: 实现Runnable接口创建多线程问题
public class BankConsumerDemo {
public static void main(String[] args) {
  //创建自定义对象
  Consumer c = new Consumer();
  //Consumer c2 = new Consumer();
//Consumer c3 = new Consumer();
  
  //创建线程, 把自定义对象当做参数来传递
  Thread t1 = new Thread(c,"第一个人");
  Thread t2 = new Thread(c,"第二个人");
// Thread t2 = new Thread(c2,"第二个人");
Thread t3 = new Thread(c,"第三个人");
//  Thread t3 = new Thread(c3,"第三个人");
  //开启线程
  t1.start();
  t2.start();
  t3.start();
  
}
}
这里为什么不是创建三个自定义对象,然后分别把三个对象当做参数传递,创建线程,开启线程

作者: luheqi    时间: 2014-7-2 18:10
问得好。。同问。。
作者: 陈云阳    时间: 2014-7-2 18:24
楼主代码不发完整,线程运行的代码哪去了?问题也没问清楚,你这程序不是只传递一个对象吗,另外俩个被注释了
作者: dispensable    时间: 2014-7-2 18:33
你这例子不完整,还是哪个视频我没看过?之所以这样是因为:为了保证几个线程之间操作的数据是同一个,如果创建几个对象,分别当做参数,那几个线程之间操作的只是自己参数对象的数据而已,跟单线程没区别,多线程第一个要素就是首先要有共享数据
作者: 北极£莜蓝    时间: 2014-7-2 20:23
dispensable 发表于 2014-7-2 18:33
你这例子不完整,还是哪个视频我没看过?之所以这样是因为:为了保证几个线程之间操作的数据是同一个,如果 ...

多线程不一定要共享数据吧,虽然说他们争抢的是CPU的执行权,也不一定要共享数据吧,   
作者: 北极£莜蓝    时间: 2014-7-2 20:25
陈云阳 发表于 2014-7-2 18:24
楼主代码不发完整,线程运行的代码哪去了?问题也没问清楚,你这程序不是只传递一个对象吗,另外俩个被注释 ...

其他的代码不重要,我只是想问下,他们的区别
作者: caiyaoren    时间: 2014-7-2 20:29
不知道  ⊙﹏⊙b汗
作者: rekirt    时间: 2014-7-2 21:42
北极£莜蓝 发表于 2014-7-2 20:25
其他的代码不重要,我只是想问下,他们的区别

你不发完整的代码,谁知道你想知道什么,我就写个int i=0,我想知道反射是什么,有用吗,,,
作者: 马到成功2014    时间: 2014-7-2 22:37
你要是定义三个对象,那你还是访问同一个数据嘛  没有共同数据访问不算是多线程把 我是这么理解的
作者: 北极£莜蓝    时间: 2014-7-2 23:17
dispensable 发表于 2014-7-2 18:33
你这例子不完整,还是哪个视频我没看过?之所以这样是因为:为了保证几个线程之间操作的数据是同一个,如果 ...

突发奇想的,多线程不一定要共享数据吧,
作者: 钟翠翠    时间: 2014-7-2 23:21
这里是为对象c创建3个线程
作者: 陈云阳    时间: 2014-7-3 00:59
北极£莜蓝 发表于 2014-7-2 20:25
其他的代码不重要,我只是想问下,他们的区别

区别?还是没懂, 你是说3个线程的区别吗?  没什么区别啊,就相当于发100张传单, 一个人发会比较慢,3个人发就比较快,
作者: EarlyHeart    时间: 2014-7-3 04:35
本帖最后由 EarlyHeart 于 2014-7-3 04:36 编辑

首先多线程可以没有共享数据,只是很多情况下是共享数据的。
楼主举得这个例子我想应该是:三个人去银行存钱,他们各自拿着自己要存的钱,但是银行业务繁忙,所以大家都只能"抢着"一点一点的存了(抢cpu时间片),这里并没有公共的数据,三个Runnable对象的数据都是只属于自己的,因此楼主的代码中注掉的代码对于上述情况才是正确的。
这跟卖票的例子不一样,卖票的例子中的票是公共的,是共享数据,而这里的钱是每个线程自己的,抢的只是时间片,执行机会,并不涉及共享数据的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2