public class ThreadTest {
public static void main(String[] args) throws InterruptedException {
CounterThread ct = new CounterThread();
ct.setDaemon(true);
ct.start();
ct.join(2);
System.out.println("interrupt status: " + ct.getState()); // key sentence
if (ct.isAlive()) {
System.out.println("start interrupt");
ct.interrupt();
}
System.out.println("result: " + ct.getResult());
}
}
class CounterThread extends Thread {
private int result;
public int getResult() {
return result;
}
public void run() {
for (int i = 0; i < 999999999; i++) {
if (i == 999999998) {
result = 5;
System.out.println("calculate finished");
}
if (Thread.interrupted()) {
result = -1;
System.out.println("receive interrupt signal");
return;
}
}
}
}
私は上記のコードを使用してJava割り込みメカニズムをテストします。私が印刷文をコメントアウトするとき結果がJavaのスレッド割り込みでは返されない
System.out.println( "割り込みステータス:" + ct.getState());
結果は常に同じです: 割り込み
スタートは、割り込み信号 結果受信:-1
を私はコードでそれを残しながら、結果が再現可能ではありません。結果は指定できます
割り込みステータス: 結果割り込みRUNNABLE 開始:-1 は
または割り込み信号を受信します。
割り込みステータス: 結果割り込みRUNNABLE スタート:0 割り込み信号を受け取ります
理由がわからない場合は、お手伝いください。ありがとう。
おかげで、それは私にはとても分かります。 – awkejiang