volatile
ブール値を追加できますflag
。
public class Worker implements Runnable {
volatile boolean cancel = false;
@Override
public void run() {
while (!cancel) {
// Do Something here
}
}
public void cancel() {
cancel = true;
}
}
今、あなたはただ電話することができます
worker.cancel();
アップデート:
shutdownNow()の Java doc から
アクティブに実行中のすべてのタスクの停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。
ここでは、アクティブに実行中のタスクの処理を停止するための最善の試みを超える保証はありません。たとえば、典型的な実装はThread.interrupt()によってキャンセルされるため、割り込みに応答しないタスクは決して終了しない可能性があります。
したがって、割り込みを保持して割り込みポリシーを定義する必要があります
catch (InterruptedException ie) {
// Preserve interrupt status
Thread.currentThread().interrupt();
}