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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java的知识点28——线程的生命周期

發布時間:2025/4/16 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的知识点28——线程的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線程的生命周期

一個線程對象在它的生命周期內,需要經歷5個狀態。

1.? 新生狀態(New):?用new關鍵字建立一個線程對象后,該線程對象就處于新生狀態。處于新生狀態的線程有自己的內存空間,通過調用start方法進入就緒狀態

2. 就緒狀態(Runnable):?處于就緒狀態的線程已經具備了運行條件,但是還沒有被分配到CPU,處于“線程就緒隊列”,等待系統為其分配CPU。就緒狀態并不是執行狀態,當系統選定一個等待執行的Thread對象后,它就會進入執行狀態。一旦獲得CPU,線程就進入運行狀態并自動調用自己的run方法。有4中原因會導致線程進入就緒狀態:

? ? ??1. 新建線程:調用start()方法,進入就緒狀態;

? ? ??2. 阻塞線程:阻塞解除,進入就緒狀態;

? ? ??3. 運行線程:調用yield()方法,直接進入就緒狀態;

? ? ??4. 運行線程:JVM將CPU資源從本線程切換到其他線程。

3. 運行狀態(Running):在運行狀態的線程執行自己run方法中的代碼,直到調用其他方法而終止或等待某資源而阻塞或完成任務而死亡。如果在給定的時間片內沒有執行結束,就會被系統給換下來回到就緒狀態。也可能由于某些“導致阻塞的事件”而進入阻塞狀態。

4. 阻塞狀態(Blocked):阻塞指的是暫停一個線程的執行以等待某個條件發生(如某資源就緒)。有4種原因會導致阻塞:

? ? ??1. 執行sleep(int millsecond)方法,使當前線程休眠,進入阻塞狀態。當指定的時間到了后,線程進入就緒狀態。

? ? ??2. 執行wait()方法,使當前線程進入阻塞狀態。當使用nofity()方法喚醒這個線程后,它進入就緒狀態。

? ? ??3. 線程運行時,某個操作進入阻塞狀態,比如執行IO流操作(read()/write()方法本身就是阻塞的方法。只有當引起該操作阻塞的原因消失后,線程進入就緒狀態。

? ? ??4. join()線程聯合: 當某個線程等待另一個線程執行結束后,才能繼續執行時,使用join()方法。

5. 死亡狀態(Terminated):?死亡狀態是線程生命周期中的最后一個階段。線程死亡的原因有兩個。一個是正常運行的線程完成了它run()方法內的全部工作; 另一個是線程被強制終止,如通過執行stop()或destroy()方法來終止一個線程(注:stop()/destroy()方法已經被JDK廢棄,不推薦使用)。當一個線程進入死亡狀態以后,就不能再回到其它狀態了。


終止線程
?* 1. 線程正常執行完畢--》次數
?* 2. 外部干涉--》加入標識
?* 不要使用stop destroy

/*** 終止線程* 1. 線程正常執行完畢--》次數* 2. 外部干涉--》加入標識* 不要使用stop destroy* @author Administrator**/ public class TerminateThread implements Runnable{//1. 加入標識 標記線程體是否可以運行private boolean flag=true;private String name;public TerminateThread(String name) {this.name = name;}@Overridepublic void run() {int i=0;//2.關聯標識, true-->運行 false-->停止while(flag) {System.out.println(name+"---->"+i++); }}//3.對外提供方法改變標識public void terminate() {this.flag=false;}public static void main(String[] args) {TerminateThread tt=new TerminateThread("止兮");new Thread(tt).start();for(int i=0;i<=99;i++) {if(i==88) {tt.terminate();//線程的終止System.out.println("tt game over");}System.out.println("main-->"+i);}}}


sleep模擬網絡延時、倒計時

sleep模擬網絡延時,放大了發生問題的可能性

/*** sleep模擬網絡延時,放大了發生問題的可能性* @author Administrator**/ public class BlockedSleep01 implements Runnable{//票數private int ticketNums=99;@Overridepublic void run() {while(true) {if(ticketNums<0) {break;}//模擬延時try {Thread.sleep(200); //相當于網絡延時問題。會造成數據的不準確性} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName()+"--->"+ticketNums--);}// TODO Auto-generated method stub}public static void main(String[] args) {//一份資源BlockedSleep01 web=new BlockedSleep01();System.out.println(Thread.currentThread().getName());//多個代理new Thread(web,"馬畜").start();new Thread(web,"碼農").start();new Thread(web,"碼蝗").start();} }


sleep 模擬休息

//sleep 模擬休息 public class BlockedSleep02 implements Runnable{private String winner; //勝利者@Overridepublic void run() {for(int steps=1;steps<=100;steps++) {//模擬兔子休息if(Thread.currentThread().getName().equals("rabbit")&&steps%10==0) {try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println(Thread.currentThread().getName()+"--->"+steps);//比賽是否結束boolean flag=gameOver(steps);if(flag) {break;}}}private boolean gameOver(int steps) {if(winner!=null) {//存在勝利者return true;}else {if(steps==100) {winner=Thread.currentThread().getName();System.out.println("winner==>"+winner);return true;}}return false;}public static void main(String[] args) {BlockedSleep02 BlockedSleep02=new BlockedSleep02();new Thread(BlockedSleep02,"tortoise").start();new Thread(BlockedSleep02,"rabbit").start();} }


sleep 模擬倒計時

/*** sleep 模擬倒計時* @author Administrator**/ public class BlockedSleep03 {/*** @param args* @throws InterruptedException*/public static void main(String[] args) throws InterruptedException {// 倒數10個數,一秒一個int num=10;while(true) {Thread.sleep(1000);System.out.println(num--);if(num<0) {break;}}} } import java.text.SimpleDateFormat; import java.util.Date;/*** sleep 模擬倒計時* @author Administrator**/ public class BlockedSleep03 {public static void main(String[] args) throws InterruptedException {//倒計時Date endTime=new Date(System.currentTimeMillis()+1000*10); //倒計時10秒long end=endTime.getTime();while(true) {System.out.println(new SimpleDateFormat("mm:ss").format(endTime));Thread.sleep(1000);endTime=new Date(endTime.getTime()-1000);if(end-10000>endTime.getTime()) {break;}}}public static void test() throws InterruptedException {// 倒數10個數,一秒一個int num=10;while(true) {Thread.sleep(1000);System.out.println(num--);if(num<0) {break;}}} }


yield 禮讓線程,暫停線程 ?直接進入就緒狀態 而不是進入阻塞狀態

/*** yield 禮讓線程,暫停線程 直接進入就緒狀態 而不是進入阻塞狀態* @author Administrator**/ public class YieldDemo01 {public static void main(String[] args) {MyYield my=new MyYield();new Thread(my,"a").start();new Thread(my,"b").start();} }class MyYield implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"-->start");Thread.yield(); //禮讓 從運行態到就緒態System.out.println(Thread.currentThread().getName()+"-->end");}}

public class YieldDemo02 {public static void main(String[] args) {new Thread(()->{for(int i=0;i<100;i++) {System.out.println("lambda……"+i);}}) .start();for(int i=0;i<100;i++) {if(i%20==0) {Thread.yield(); //main線程禮讓}System.out.println("main....."+i);}} }


join:合并線程 插隊線程

/*** join:合并線程 插隊線程* @author Administrator**/ public class BlockedJoin01 {public static void main(String[] args) throws InterruptedException {Thread t= new Thread(()->{for(int i=0;i<100;i++) {System.out.println("lambda……"+i);}});t.start();for(int i=0;i<100;i++) {if(i==20) {t.join(); //插隊 main主線程被阻塞了}System.out.println("main....."+i);}} }

總結

以上是生活随笔為你收集整理的Java的知识点28——线程的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 少妇闺蜜换浪荡h肉辣文 | 91精品免费 | 精品午夜一区二区 | 日本人妻丰满熟妇久久久久久 | 久草成人 | 香蕉视频色 | 福利视频在线 | 中文字幕麻豆 | 日日躁夜夜躁狠狠久久av | 亚洲国产精品免费视频 | 九月丁香婷婷 | 日韩一区二区影视 | 欧美性受xxxx黑人猛交88 | videos亚洲| 538国产精品一区二区免费视频 | 日本性生活一级片 | 午夜伊人网 | 国产美女永久免费 | 亚洲人交配 | 五月婷婷在线视频 | 国产精品一区二区三区高潮 | 国产精品一区免费 | 疯狂揉花蒂控制高潮h | sm乳奴虐乳调教bdsm | 在线能看的av网站 | 亚洲理论中文字幕 | 大胸美女被爆操 | 黄网在线观看免费 | 五月婷婷综合在线 | 九色国产视频 | 中文字幕23页 | 久久精品视频6 | 国产视频不卡一区 | 超碰成人av | 国产男男gay体育生网站 | 天天躁日日躁狠狠躁伊人 | 日韩精品免费看 | 国产黄色网址在线观看 | www.成年人 | 精品网站999 | 成人小片 | 亚洲我射 | 草比视频在线观看 | 欧美激情一级精品国产 | 蜜桃久久久久 | 毛茸茸亚洲孕妇孕交片 | 影音先锋二区 | 国产精品久久久久久亚洲毛片 | 韩国精品av | 亚洲欧美日韩在线播放 | 国产免费一级视频 | 色丁香婷婷 | 欧美在线中文字幕 | 欧美日韩1区2区 | 草莓视频在线观看18 | h视频在线免费观看 | 少妇第一次交换又紧又爽 | 浪潮av网站| 最新国产精品自拍 | 激情五月婷婷在线 | www.男人的天堂.com | 中国av免费 | 99产精品成人啪免费网站 | 2025国产精品| 91手机在线 | 国产探花在线精品一区二区 | 欧美国产成人精品一区二区三区 | 疯狂做爰的爽文多肉小说王爷 | 在线观看特色大片免费网站 | 亚洲综合小说 | 久久久在线免费观看 | 99久久国产综合 | 欧美日韩成人在线播放 | 亚洲制服av| 日韩av电影在线播放 | 激情 小说 亚洲 图片 伦 | 精品国产乱码久久久 | 日韩一区二区三 | 香蕉视频官网在线观看 | 亚洲一区二三区 | 麻豆午夜视频 | 国产精品1区2区3区4区 | 男ji大巴进入女人的视频 | 国产三区在线播放 | 综合色导航 | 殴美一区二区 | av不卡免费在线观看 | 中文字幕av播放 | 日韩中文字幕观看 | 欧美人与性动交ccoo | 亚洲欧美日韩第一页 | 国产性猛交96 | 91综合网 | 91国自产精品中文字幕亚洲 | 野外做受又硬又粗又大视频√ | 九九视频精品在线 | 在线观看9.1 | av在线不卡网| 亚洲第一成人在线 |