我刚刚在isAlive方法的下面的代码中看到了问题,即使我也尝试在主线程中添加一些睡眠以及我的线程对象,它仍会返回false它给出了同样的行为。
public class ThreadBehaviour implements Runnable {
private Thread t;
ThreadBehaviour() {
t = new Thread();
t.setName("hello");
}
public void start() throws InterruptedException {
if (!t.isAlive()) {
t.start();
//Thread.currentThread().sleep(1000L);
//t.sleep(3000l);
System.out.println(t.getName() + " Running....." + t.isAlive());// why is Alive is false here?
}
}
public static void main(String args[]) throws InterruptedException {
ThreadBehaviour myThread = new ThreadBehaviour();
myThread.start();
}
@Override
public void run() {
t.run();
}
}
答案 0 :(得分:4)
你制作的主题没有任何作用,所以它会立即完成并死掉。
考虑一下:
t = new Thread(() -> {
while (true) {
System.out.println("I'm running...");
}
});
再试一次。
答案 1 :(得分:1)
阅读java doc 的IsAlive();
您只在构造函数中实例化而未启动。所以线程没有启动。