本帖最后由 王俊杰 于 2013-3-12 22:16 编辑
请问在实现Runnable的类里面添加Thread类型的成员变量有神马好处啊?
我重新编辑了一下,我想尽量把问题说清楚。原谅我的语无伦次。要是您觉得说的比较乱,就凑合着看吧 哈哈
我在学习线程的时候学会了两种基本的线程实现方式。其中一种是实现Runnable接口。
把实现Runnable接口的对象作为参数,再由Thread的构造方法构造成为一个线程。
我也是习惯了这样做的。
可是我前几天看到一种新的方法。
一个实现了Runnable接口的类中添加了一个Thread类型的成员变量。这让我感到很惊奇,可能是我少见多怪吧,感觉太奇妙 了,原来也可以这样做啊。
然后我自己写了两段代码,都i是放在主方法中的。我在想这两种方式有什么区别呢。那种更好一些呢。我觉得,把Thread类的对象作为成员放到实现Runnable的类中,好像更容易理解一些。一个对象内部包含一个线程。而如果用线程来包装这个类,这个线程还要再取个名字。类太多了,类的名字很难让人联想到它本身是个什么东西。这是我的不靠谱的一点想法。
有没有人是这样做的啊?就是在实现Runnable的类里面添加Thread类型的成员变量?能不能告诉我为什么要这样,有神马好处啊?
下面是我写的代码。本来我想用这个代码工具插入来着,感觉不好用,可能我不太会用吧。只好直接贴下面吧。
public static void main(String[] args) {
// 我写成了匿名类。都写在主方法里的。
// 第一种方式:接收一个Runnable对象来构造线程 new Thread(new Runnable() {
@Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("AAA"); try { Thread.sleep(2000); }catch(InterruptedException e) { } } } }).start();
// 第二种方式:将Thread对象作为Runnable对象的成员 new Runnable() { ThreadinnerThread= newThread(this); @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("BBB"); try { Thread.sleep(2000); }catch(InterruptedException e) { } } }
}.innerThread.start();
}
|