Я только что видел проблему в моем нижнем коде в методе isAlive, он вернет false даже метод thread.start(), даже я также попытался добавить некоторый сон в основной поток, так как так же как мой объект потока, но все же он дает такое же поведение.Неправильное поведение IsAlive() в Thread
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();
}
}
Честно говоря, я не совсем уверен, что вы здесь делаете – TheLostMind
Я просто хочу прояснить концепцию метода isAlive, мой вопрос в моем методе начала, даже я пишу t.start, тогда почему isAlive возвращает false? –
Чтобы проверить 'isAlive', создайте отдельный класс, который реализует' Runnable' и использует его для создания и запуска потока в вашем основном классе. В 'run()' Runable ', используйте 'sleep' и цикл. В основном, проверьте, что нить жива. – TheLostMind