java多線程: 如何中止線程

和線程中止相關的三個方法線程

/*
中斷線程。若是線程被wait(),join(),sleep()等方法阻塞,調用interrupt()會清除線程中斷狀態,並收到InterruptedException異常。另外interrupt();對於isAlive()返回false的線程不起做用。
*/
 public void interrupt();
    /*
    靜態方法,判斷線程中斷狀態,而且會清除線程的中斷狀態。因此連續屢次調用該方法,第二次以後一定返回false。另外,isAlive()用於判斷線程是否處於存活狀態,若是isAlive()返回false,interrupted()也一定返回false。
    */
 public static boolean interrupted();
/*
判斷線程中斷狀態,但不會清除線程中斷狀態。另外,isAlive()用於判斷線程是否處於存活狀態,若是isAlive()返回false,interrupted()也一定返回false。
*/
 public boolean isInterrupted();

線程中止的幾種狀況:
1: 使用退出標記,run方法執行完畢,線程正常退出。
2: 使用stop()方法,已過期的方法,不推薦。
3: 使用interrupt()方法中斷線程。code

interrupt()

單獨調用這個方法並不能中斷線程,只是打了一箇中斷狀態的標記。或者說是將線程狀態更改成中斷狀態。
中斷線程能夠經過如下幾種方法。it

  1. 在線程內部拋出異常。
  2. 在線程內部使用return結束線程。
相關文章
相關標籤/搜索