Java iş parçacığının isAlive()
yöntemini deniyordum. Ancak, iş parçacığı zaten başlatılmış olsa bile false
'un isAlive()
yöntemini döndürdüğünü buldum. Birisi bana neyi yanlış yaptığımı söyleyebilir mi? İşte kod pasajı.isAlive() yöntemi düzgün çalışmıyor?
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();
}
}
}
Thread.getState() yerine, ek bilgi sağlar. Bir iş parçacığının iki kez başlatılmasının da bir etkisi yoktur. – bestsss
@bestsss'ın tavsiyesiyle ilgili olarak: Brian Goetz'in Practice'deki Java Concurrency adlı kitabında, "Thread.getState'in sonucu eşzamanlılık kontrolü için kullanılmamalıdır ve test için kullanışlılığı vardır. Birincil yardımcı program hata ayıklama kaynağıdır. bilgi." – WoodenKitty
@WoodenKitty, bir iş parçacığı başlatılmamışken getState() sabit olacaktır (iş parçacığı başladığında bazı senk. Gerekebilir). Goetz'in tavsiyesi oldukça sağlam bir şey ancak bu durumda geçerli değil. – bestsss