黑马程序员技术交流社区
标题:
构造方法中可以开启线程吗
[打印本页]
作者:
张 涛
时间:
2012-9-15 10:24
标题:
构造方法中可以开启线程吗
本帖最后由 张 涛 于 2012-9-18 14:56 编辑
如果想在一个对象被new出时就创建一个线程,把线程写在他的构造方法里,结果成这样:
public class AAA implements Runnable {
String name;
AAA(String name){
this.name = name;
new Thread(new AAA()).start();
}
@Override
public void run() {
....
}
}
复制代码
但是,这样执行不久死循环了吗?有其他方法吗?实现在构造方法里开启线程。
作者:
马睿
时间:
2012-9-15 10:28
构造方法中可以new 对象,也可以调用对象的方法……应该可以的……当然,建议在构造方法中new和start的是其他线程对象的线程……不然是会逐渐占有资源直到死掉。。。
作者:
佟亚鹏
时间:
2012-9-15 10:40
本帖最后由 佟亚鹏 于 2012-9-15 10:42 编辑
楼主,这个是可以使的,使用jdk5的线程库,在构造方法内启动线程,Executors里面包括了大量的操作线程的静态方法,
Executors.newSingleThreadExecutor().execute(
command),这个方法可以执行一个Runnable接口的实例,逻辑放在run里面,举个例子
public class Test {
public Test() {
Executors.newSingleThreadExecutor().execute(
new Runnable() {
public void run() {
System.out.println("execute start");
try {
//让这个线程休息2秒
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//打印当前时间
System.out.println("execute " + new Date().toLocaleString());
System.out.println("execute end");
}
});
System.out.println("Test construtor " + new Date().toLocaleString());
}
public static void main(String[] args) {
new Test();
}
}
复制代码
打印结果:
execute start
Test construtor 2012-9-15 10:36:47
execute 2012-9-15 10:36:49
execute end
从打印的时间可以看出,代码分路径了。。。。。希望能够帮助到你
作者:
黑马_许芸
时间:
2012-9-15 10:46
可以的。建议你看下张老师的交通灯管理系统的视频,该系统中有两个类都在构造方法中定义了线程。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2