Я пытался использовать метод java threading для isAlive()
. Но я обнаружил, что метод isAlive()
возвращает false
, даже если поток уже запущен. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно? Вот фрагмент кода.isAlive() метод java thread работает неправильно?
package app;
public class ThreadAliveDemo {
public static void main(String[] args) {
Thread myThread;
myThread = new Thread()
{
public void run()
{
Thread.sleep(3000);
System.out.println("My Thread.");
}
};
myThread.setName("My Thread");
myThread.start();
if(!myThread.isAlive())
{
myThread.setName("My Thread");
myThread.start();
}
}
}
use Thread.getState() вместо этого предоставляет дополнительную информацию. начинать нить дважды не имеет никакого эффекта. – bestsss
Что касается совета @bestsss: книга Брайана Гетца, Java Concurrency in Practice, говорит: «Результат Thread.getState не должен использоваться для контроля параллелизма и имеет ограниченную полезность для тестирования. Основная утилита является источником отладки Информация." – WoodenKitty
@WoodenKitty, в то время как поток не был запущен getState() будет стабильным (может потребоваться некоторая синхронизация с запуском потока). Совет Goetz очень прочный, но в этом случае он неприменим. – bestsss