欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

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

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

開(kāi)通VIP
Java 多線(xiàn)程 【轉載】

Java多線(xiàn)程編程要點(diǎn)

作者: chuangxin01

1、 認識Thread和Runnable

Java中實(shí)現多線(xiàn)程有兩種途徑:繼承Thread類(lèi)或者實(shí)現Runnable接口。Runnable是接口,建議用接口的方式生成線(xiàn)程,因為接口可以實(shí)現多繼承,況且Runnable只有一個(gè)run方法,很適合繼承。在使用Thread的時(shí)候只需繼承Thread,并且new一個(gè)實(shí)例出來(lái),調用start()方法即可以啟動(dòng)一個(gè)線(xiàn)程。

Thread Test = new Thread();

Test.start();

在使用Runnable的時(shí)候需要先new一個(gè)實(shí)現Runnable的實(shí)例,之后啟動(dòng)Thread即可。

Test impelements Runnable;

Test t = new Test();

Thread test = new Thread(t);

test.start();

總結:Thread和Runnable是實(shí)現java多線(xiàn)程的2種方式,runable是接口,thread是類(lèi),建議使用runable實(shí)現java多線(xiàn)程,不管如何,最終都需要通過(guò)thread.start()來(lái)使線(xiàn)程處于可運行狀態(tài)。

2、 認識Thread的start和run

1) start:

用start方法來(lái)啟動(dòng)線(xiàn)程,真正實(shí)現了多線(xiàn)程運行,這時(shí)無(wú)需等待run方法體代碼執行完畢而直接繼續執行下面的代碼。通過(guò)調用Thread類(lèi)的start()方法來(lái)啟動(dòng)一個(gè)線(xiàn)程,這時(shí)此線(xiàn)程處于就緒(可運行)狀態(tài),并沒(méi)有運行,一旦得到spu時(shí)間片,就開(kāi)始執行run()方法,這里方法run()稱(chēng)為線(xiàn)程體,它包含了要執行的這個(gè)線(xiàn)程的內容,Run方法運行結束,此線(xiàn)程隨即終止。

2) run:

run()方法只是類(lèi)的一個(gè)普通方法而已,如果直接調用Run方法,程序中依然只有主線(xiàn)程這一個(gè)線(xiàn)程,其程序執行路徑還是只有一條,還是要順序執行,還是要等待run方法體執行完畢后才可繼續執行下面的代碼,這樣就沒(méi)有達到寫(xiě)線(xiàn)程的目的。

總結:調用start方法方可啟動(dòng)線(xiàn)程,而run方法只是thread的一個(gè)普通方法調用,還是在主線(xiàn)程里執行。

3、 線(xiàn)程狀態(tài)說(shuō)明

線(xiàn)程狀態(tài)從大的方面來(lái)說(shuō),可歸結為:初始狀態(tài)、可運行狀態(tài)、不可運行狀態(tài)和消亡狀態(tài),具體可細分為上圖所示7個(gè)狀態(tài),說(shuō)明如下:

1) 線(xiàn)程的實(shí)現有兩種方式,一是繼承Thread類(lèi),二是實(shí)現Runnable接口,但不管怎樣,當我們new了thread實(shí)例后,線(xiàn)程就進(jìn)入了初始狀態(tài);

2) 當該對象調用了start()方法,就進(jìn)入可運行狀態(tài);

3) 進(jìn)入可運行狀態(tài)后,當該對象被操作系統選中,獲得CPU時(shí)間片就會(huì )進(jìn)入運行狀態(tài);

4) 進(jìn)入運行狀態(tài)后case就比較多,大致有如下情形:

﹒run()方法或main()方法結束后,線(xiàn)程就進(jìn)入終止狀態(tài);

﹒當線(xiàn)程調用了自身的sleep()方法或其他線(xiàn)程的join()方法,就會(huì )進(jìn)入阻塞狀態(tài)(該狀態(tài)既停止當前線(xiàn)程,但并不釋放所占有的資源)。當sleep()結束或join()結束后,該線(xiàn)程進(jìn)入可運行狀態(tài),繼續等待OS分配時(shí)間片;

﹒當線(xiàn)程剛進(jìn)入可運行狀態(tài)(注意,還沒(méi)運行),發(fā)現將要調用的資源被鎖牢(synchroniza,lock),將會(huì )立即進(jìn)入鎖池狀態(tài),等待獲取鎖標記(這時(shí)的鎖池里也許已經(jīng)有了其他線(xiàn)程在等待獲取鎖標記,這時(shí)它們處于隊列狀態(tài),既先到先得),一旦線(xiàn)程獲得鎖標記后,就轉入可運行狀態(tài),等待OS分配CPU時(shí)間片;

﹒當線(xiàn)程調用wait()方法后會(huì )進(jìn)入等待隊列(進(jìn)入這個(gè)狀態(tài)會(huì )釋放所占有的所有資源,與阻塞狀態(tài)不同),進(jìn)入這個(gè)狀態(tài)后,是不能自動(dòng)喚醒的,必須依靠其他線(xiàn)程調用notify()或notifyAll()方法才能被喚醒(由于notify()只是喚醒一個(gè)線(xiàn)程,但我們由不能確定具體喚醒的是哪一個(gè)線(xiàn)程,也許我們需要喚醒的線(xiàn)程不能夠被喚醒,因此在實(shí)際使用時(shí),一般都用notifyAll()方法,喚醒有所線(xiàn)程),線(xiàn)程被喚醒后會(huì )進(jìn)入鎖池,等待獲取鎖標記。

﹒當線(xiàn)程調用stop方法,即可使線(xiàn)程進(jìn)入消亡狀態(tài),但是由于stop方法是不安全的,不鼓勵使用,大家可以通過(guò)run方法里的條件變通實(shí)現線(xiàn)程的stop。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
徐葳【2019版最新】40小時(shí)掌握Java語(yǔ)言之05多線(xiàn)程
Java 多線(xiàn)程總結
Thread的run()與start()的區別
《Java程序設計教程》08 多線(xiàn)程與異常機制
深入淺出:JAVA多線(xiàn)程編程實(shí)戰-基礎篇
Java 多線(xiàn)程學(xué)習詳細總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久