JAVA——どうやってスレッドを止めますか?(interrupt)
stopの方法はもう時代遅れだ.では、スレッドを停止するにはどうすればいいですか?一つだけrunメソッドが終了します.マルチスレッド実行をオンにします.実行コードは通常、ループ構造です.ループを制御すればrunメソッド,すなわちスレッドを終了させることができる.
特殊な場合:スレッドがフリーズされている場合.タグは読み込まれません.スレッドは終了しません.フリーズしたスレッドを実行状態に戻す方法が指定されていない場合は、フリーズをクリアする必要があります.スレッドを実行状態に強制的に復元します.これにより、タグを操作してスレッドを終了することができます.Threadクラスはこの方法interrupt()を提供した.参照例:
特殊な場合:スレッドがフリーズされている場合.タグは読み込まれません.スレッドは終了しません.フリーズしたスレッドを実行状態に戻す方法が指定されていない場合は、フリーズをクリアする必要があります.スレッドを実行状態に強制的に復元します.これにより、タグを操作してスレッドを終了することができます.Threadクラスはこの方法interrupt()を提供した.参照例:
class StopThread implements Runnable {
private boolean flag = true;
public synchronized void run()
{
while(flag)
{
try
{
wait();
}
catch(InterruptedException e)
{
System.out.println(Thread.currentThread().getName()+"....Exception");
flag = false;
}
System.out.println(Thread.currentThread().getName()+"....run");
}
}
public void changeFlag()
{
flag = false;
}
}
class StopThreadDemo
{
public static void main(String[] args)
{
StopThread st = new StopThread();
Thread t1 = new Thread(st);
Thread t2 = new Thread(st);
t1.start();
t2.start();
int num = 0;
while(true)
{
if(num++==10)
{
//st.changeFlag();
t1.interrupt();
t2.interrupt();
break;
}
System.out.println(Thread.currentThread().getName()+"....main"+num);
}
}
}