A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 周刚 中级黑马   /  2012-6-26 23:15  /  1648 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   昨天又看了毕老师的教程,看到了多线程。本来我们的类要想实现多线程,就得要继承线程类。但这样有很多的不便:1、我们的类不能再继承其他的类。有时这种继承是很有必要的,对线程类的继承浪费了仅有的一个宝贵名额。2、共享变量不好传递(卖票的例子)。可以用static解决,但static变量的生命周期太长,不好。
   于是神奇的第二种实现多线程的方式出现了!!---===实现Runnable接口。
   我们实现Runnable接口(同时Thread有一个接收Runnable 的构造方法),这样就很好地解决了java不能多继承的问题,把我们的类对象作为公共变量传递给多个线程,这样第二个问题也很好地解决了。

  就这样完美地解决了问题,喜出望外的同时,我不禁要想,为什么会这么神奇呢?这后面隐含了什么原理呢?Thread类就像一个工厂,他可以制造家具,我们如果想制造家具,有两种方法:
    一是自己也学着造一个同样的工厂,在自己的厂里面制造家具。这就相当于把我们的类继承Thread线程,创建多线程。
   二是,我们自己不用开厂,让Thread厂给我们代加工。工厂贴出告示说可以加工一种叫Runnable的木材,然后我们就拿着自己的Runnable木材到工厂,让工厂给代加工,制造家具。我将这种方式我称为代加工模式。这样是不是很爽?自己想要的家具别人帮忙制造了。自己可以自由选择开别的厂(继承其他的类)。代加工能实现的前提条件是:Thread工厂可以加工Runnable木材,而你自己也有Runnable木材。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马