Java 之 線程睡眠和線程讓步__Java

來源:互聯網
上載者:User

線程睡眠

        如果需要讓當前正在執行的線程暫停一段時間,並進入阻塞狀態,則可以通過調用Thread類的靜態sleep方法來實現。sleep方法的兩種重載形式:

        1.static void sleep(long millis):讓當前正在執行的線程暫停millis毫秒,並進入阻塞狀態,該方法受到系統計時器和線程調度器的精度與準確度的影響。

         2.static void sleep(long millis,int nanos):讓當前正在執行的線程暫停millis毫秒,並進入阻塞狀態,該方法受到系統計時器和線程調度器的精度與準確度的營銷。


        噹噹前線程調用sleep方法進入阻塞狀態後,在其睡眠時間段內,改線程不會獲得執行的機會,即使系統中沒有其他可執行檔線程,處於sleep中的線程也不會執行,因此sleep方法常用來暫停程式的執行。


線程讓步

        yield方法是一個和sleep方法有點相似的方法,它也是Thread類提供的一個靜態方法,它可以讓當前正在執行的線程暫停,但它不會阻塞該線程,它只是將該線程轉入就緒狀態。yield只是讓當前線程暫停一下,讓系統的線程調度器重新調度一次,完全可能的情況是:當某個線程調用了yield方法暫停之後,線程調度器又將其調度出來重新執行。

        實際上,當某個線程調用了yield方法暫停之後,只有優先順序與當前線程相同,或者優先順序比當前線程更高的處於就緒狀態的線程才會獲得執行的機會。

package com.hehe.thread;public class Yield extends Thread{public Yield(String name){super(name);}//定義run方法作為線程執行體public void run(){for (int i = 0; i <50; i++) {System.out.println(getName() + " " + i);if (i==20) {Thread.yield();}}}public static void main(String[] args)throws Exception{//啟動兩個並發線程Yield yieldThread1=new Yield("進階");yieldThread1.setPriority(Thread.MAX_PRIORITY);yieldThread1.start();Yield yieldThread2=new Yield("低級");yieldThread2.setPriority(Thread.MIN_PRIORITY);yieldThread2.start();} }


sleep和yield的區別:

        1.sleep方法暫停當前線程,會給其他線程執行機會,不會理會其他線程的優先順序;但yield方法只會給優先順序相同,或優先順序更高的 線程執行機會。

        2.sleep方法會將線程轉入阻塞狀態,知道經過阻塞時間才會轉入就緒狀態,而yield不會將線程轉入阻塞狀態,它只是強制當前線程進入就緒狀態。因此完全有可能某個線程調用yield方法暫停之後,立即再次獲得處理器資源被執行。

        3.sleep方法比yield方法有更好的可移植性,通常不建議使用yield方法來控制並發線程的執行。









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.