日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

控制线程

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控制线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Java的線程支持提供了一些便捷的工具方法,通過這些便捷的工具方法可以很好地控制線程的執行。

  • join線程

Thread提供了讓一個線程等待另一個線程完成的方法---join()方法。當在某個程序執行流中調用其他線程的join()方法時,調用線程將被阻塞,直到被join()方法加入的join線程執行完為止。

join()方法通常由使用線程的程序調用,以將大問題劃分成許多小問題,每個小問題分配一個線程。當所有的小問題都得到處理后,再調用主線程來進一步操作。

  • 后臺線程

有一種線程是在后臺運行的,它的任務是為其他的線程提供服務,這種線程被稱為“后臺線程(Daemon Thread)”。JVM的垃圾回收線程就是的典型的后臺線程。

后臺線程有個特征:如果所有的前臺線程都死亡,后臺線程會自動死亡。

調用Thread對象的setDaemon(true)方法可將指定線程設置成后臺線程。isDaemon()方法用于判斷指定線程是否為后臺線程。

主線程默認是前臺線程。前臺線程創建的子線程默認是前臺線程,后臺線程創建的子線程默認是后臺線程。

  • 線程睡眠Thread.sleep

如果需要讓當前正在執行的線程暫停一段時間,并進入阻塞態,可以通過調用Thread類的靜態方法sleep()來實現。

當前線程調用sleep()方法進入阻塞態后,在其睡眠時間段內,該線程不會獲得執行的機會,即使系統中沒有其他可執行的線程,處于sleep中的線程也不會執行,因此sleep()方法常用來暫停程序的執行。

  • 線程讓步Thread.yield

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

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

通常不建議使用yield()方法來控制并發線程的執行。

  • 改變線程優先級

每個線程執行時都具有一定的優先級,優先級高的線程獲得較多的執行機會,而優先級低的線程則獲得較少的執行機會。

每個線程默認的優先級都與創建它的父線程的優先級相同,在默認情況下,main線程具有普通優先級。

Thread類提供了setPriority(int priority)實例方法來設置線程的優先級。

?

轉載于:https://my.oschina.net/u/2914561/blog/800008

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的控制线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。