免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Thread的run()與start()的區(qū)別

java的線程是通過(guò)java.lang.Thread類(lèi)來(lái)實(shí)現(xiàn)的。VM啟動(dòng)時(shí)會(huì)有一個(gè)由主方法所定義的線程??梢酝ㄟ^(guò)創(chuàng)建Thread的實(shí)例來(lái)創(chuàng)建新的線程。每個(gè)線程都是通過(guò)某個(gè)特定Thread對(duì)象所對(duì)應(yīng)的方法run()來(lái)完成其操作的,方法run()稱(chēng)為線程體。通過(guò)調(diào)用Thread類(lèi)的start()方法來(lái)啟動(dòng)一個(gè)線程。


在Java當(dāng)中,線程通常都有五種狀態(tài),創(chuàng)建、就緒、運(yùn)行、阻塞和死亡。
  第一是創(chuàng)建狀態(tài)。在生成線程對(duì)象,并沒(méi)有調(diào)用該對(duì)象的start方法,這是線程處于創(chuàng)建狀態(tài)。
  第二是就緒狀態(tài)。當(dāng)調(diào)用了線程對(duì)象的start方法之后,該線程就進(jìn)入了就緒狀態(tài),但是此時(shí)線程調(diào)度程序還沒(méi)有把該線程設(shè)置為當(dāng)前線程,此時(shí)處于就緒狀態(tài)。在線程運(yùn)行之后,從等待或者睡眠中回來(lái)之后,也會(huì)處于就緒狀態(tài)。
  第三是運(yùn)行狀態(tài)。線程調(diào)度程序?qū)⑻幱诰途w狀態(tài)的線程設(shè)置為當(dāng)前線程,此時(shí)線程就進(jìn)入了運(yùn)行狀態(tài),開(kāi)始運(yùn)行run函數(shù)當(dāng)中的代碼。
  第四是阻塞狀態(tài)。線程正在運(yùn)行的時(shí)候,被暫停,通常是為了等待某個(gè)時(shí)間的發(fā)生(比如說(shuō)某項(xiàng)資源就緒)之后再繼續(xù)運(yùn)行。sleep,suspend,wait等方法都可以導(dǎo)致線程阻塞。
  第五是死亡狀態(tài)。如果一個(gè)線程的run方法執(zhí)行結(jié)束或者調(diào)用stop方法后,該線程就會(huì)死亡。對(duì)于已經(jīng)死亡的線程,無(wú)法再使用start方法令其進(jìn)入就緒。

實(shí)現(xiàn)并啟動(dòng)線程有兩種方法
1、寫(xiě)一個(gè)類(lèi)繼承自Thread類(lèi),重寫(xiě)run方法。用start方法啟動(dòng)線程
2、寫(xiě)一個(gè)類(lèi)實(shí)現(xiàn)Runnable接口,實(shí)現(xiàn)run方法。用new Thread(Runnable target).start()方法來(lái)啟動(dòng)

多線程原理:相當(dāng)于玩游戲機(jī),只有一個(gè)游戲機(jī)(cpu),可是有很多人要玩,于是,start是排隊(duì)!等CPU選中你就是輪到你,你就run(),當(dāng)CPU的運(yùn)行的時(shí)間片執(zhí)行完,這個(gè)線程就繼續(xù)排隊(duì),等待下一次的run()。

調(diào)用start()后,線程會(huì)被放到等待隊(duì)列,等待CPU調(diào)度,并不一定要馬上開(kāi)始執(zhí)行,只是將這個(gè)線程置于可動(dòng)行狀態(tài)。然后通過(guò)JVM,線程Thread會(huì)調(diào)用run()方法,執(zhí)行本線程的線程體。先調(diào)用start后調(diào)用run,這么麻煩,為了不直接調(diào)用run?就是為了實(shí)現(xiàn)多線程的優(yōu)點(diǎn),沒(méi)這個(gè)start不行。

1.start()方法來(lái)啟動(dòng)線程,真正實(shí)現(xiàn)了多線程運(yùn)行。這時(shí)無(wú)需等待run方法體代碼執(zhí)行完畢,可以直接繼續(xù)執(zhí)行下面的代碼;通過(guò)調(diào)用Thread類(lèi)的start()方法來(lái)啟動(dòng)一個(gè)線程, 這時(shí)此線程是處于就緒狀態(tài), 并沒(méi)有運(yùn)行。 然后通過(guò)此Thread類(lèi)調(diào)用方法run()來(lái)完成其運(yùn)行操作的, 這里方法run()稱(chēng)為線程體,它包含了要執(zhí)行的這個(gè)線程的內(nèi)容, Run方法運(yùn)行結(jié)束, 此線程終止。然后CPU再調(diào)度其它線程。
2.run()方法當(dāng)作普通方法的方式調(diào)用。程序還是要順序執(zhí)行,要等待run方法體執(zhí)行完畢后,才可繼續(xù)執(zhí)行下面的代碼; 程序中只有主線程——這一個(gè)線程, 其程序執(zhí)行路徑還是只有一條, 這樣就沒(méi)有達(dá)到寫(xiě)線程的目的。

記?。?strong>多線程就是分時(shí)利用CPU,宏觀上讓所有線程一起執(zhí)行 ,也叫并發(fā)

  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.         Runner1 runner1 = new Runner1();  
  4.         Runner2 runner2 = new Runner2();  
  5. //      Thread(Runnable target) 分配新的 Thread 對(duì)象。  
  6.         Thread thread1 = new Thread(runner1);  
  7.         Thread thread2 = new Thread(runner2);  
  8. //      thread1.start();  
  9. //      thread2.start();  
  10.         thread1.run();  
  11.         thread2.run();  
  12.     }  
  13. }  
  14.   
  15. class Runner1 implements Runnable { // 實(shí)現(xiàn)了Runnable接口,jdk就知道這個(gè)類(lèi)是一個(gè)線程  
  16.     public void run() {  
  17.         for (int i = 0; i < 100; i++) {  
  18.             System.out.println("進(jìn)入Runner1運(yùn)行狀態(tài)——————————" + i);  
  19.         }  
  20.     }  
  21. }  
  22.   
  23. class Runner2 implements Runnable { // 實(shí)現(xiàn)了Runnable接口,jdk就知道這個(gè)類(lèi)是一個(gè)線程  
  24.     public void run() {  
  25.         for (int i = 0; i < 100; i++) {  
  26.             System.out.println("進(jìn)入Runner2運(yùn)行狀態(tài)==========" + i);  
  27.         }  
  28.     }  
  29. }  
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java中thread的start()和run()的區(qū)別
java學(xué)習(xí)——111.線程的狀態(tài)
Runnable接口與Thread類(lèi)的區(qū)別
Java 多線程 【轉(zhuǎn)載】
【Java】基礎(chǔ)35:線程池與線程的六種狀態(tài)
實(shí)現(xiàn)線程方式的源碼分析:Runnable,Thread,Callable,Future,FutureTask【面試+工作】
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服