天天看點

java點滴之讓Thread的停止執行的方法1.Thread.yield()方法作用是:2.Thread.sleep():3.join()方法:4.幾種特殊情況可能使線程離開運作狀态:

暫停目前正在執行的線程對象,并執行其他線程。   yield()應該做的是讓目前運作線程回到可運作狀态,以允許具有相同優先級的其他線程獲得運作機會。是以,使用yield()的目的是讓相 同優先級的線程之間能适當的輪轉執行。但是,實際中無法保證yield()達到讓步目的,因為讓步的線程還有可能被線程排程程式再次選中。   結論:yield()從未導緻線程轉到等待/睡眠/阻塞狀态。在大多數情況下,yield()将導緻線程從運作狀态轉到可運作狀态,但有可能沒有效果 

使目前線程睡眠至少多少毫秒(盡管它可能在指定的時間之前被中斷)。  

保證目前線程停止執行,直到該線程所加入的線程完成為止。然而,如果它加入的線程沒有存活,則目前線程不需要停止, 線上程myMainThread中調用另一個線程對象myThread的join方法,意味着,myMainThread線程必須等待myThread這個線程指向完畢後,才能往下執行,相當于   此時myThread插入進來,邀請必須全部完成才放行。

  如果使用的是join(long millis) ,則參數表示myMainThread線程的最長等待時間,這個數值過後,就不等了

   1、線程的run()方法完成。

   2、在對象上調用wait()方法(不是線上程上調用)。

   3、線程不能在對象上獲得鎖定,它正試圖運作該對象的方法代碼

   4、線程排程程式可以決定将目前運作狀态移動到可運作狀态,以便讓另一個線程獲得運作機會,而不需要任何理由