【发布时间】:2017-01-19 05:18:14
【问题描述】:
我写了一个小的多线程程序。
public class NewThread implements Runnable {
Thread t;
public NewThread() {
t = new Thread(this, "Thread created by Thread Class.");
System.out.println("Created by constuctor:"+ t);
t.start(); // This will call run, because t has context as this
}
@Override
public void run() {
System.out.println("run() method called.");
}
public static void main(String[] args) {
new NewThread();
}
}
这就是书中所说的写作方式。但是,我从来没有在控制台中得到 run() method called 语句。因此,似乎从未调用过run()。这怎么可能是真的?
编辑:是的,从构造函数启动线程是不好的做法,但这不会影响问题。 (我得到了很多反对票)
【问题讨论】:
-
我强烈建议不要在构造函数中启动线程。除此之外,您无需等待新线程启动并且它没有机会打印任何内容 - 您需要
join()它。 -
你的问题到底是什么,你的代码返回这个结果由构造函数创建:Thread[Thread created by Thread Class.,5,main] run()方法被调用。
-
@YoucefLaidani 没有。它不会。结果是种族危险,结果未知。
-
啊,好吧,你的问题不清楚
-
不返回
run() method called
标签: java multithreading constructor