Мне было интересно, требуется ли внешняя синхронизация для использования методов из java.lang.Thread ?
Например, можем ли мы вызвать метод t1.isAlive () из любого потока без внешней синхронизации и ожидать, что он вернется:
true, если t1 уже был запущен, иначе false.
Или требуется внешняя синхронизация для вызова методов в java.lang.Thread ?
public static void main(String args[]) {
final java.lang.Thread t1 = new java.lang.Thread(new java.lang.Runnable() {
@Override
public void run() {
while(true){
//task
}
}
});
java.lang.Thread t2 = new java.lang.Thread(new java.lang.Runnable() {
@Override
public void run() {
while (true) {
System.out.println(t1.isAlive()); // do we need synchronization before calling isAlive() ?
}
}
});
t2.start();
t1.start();
try {
java.lang.Thread.sleep(1000000);
} catch (java.lang.InterruptedException e) {
e.printStackTrace();
}
}