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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 关于线程

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

線程 又稱"執行上下文"

線程有起點,終點,順序,但不能單獨運行,依賴于程序

有兩種方法可以創建多線程的類

(1)派生Thread類的子類,Thread類在java.lang中定義

(2)實現Runnable接口,該接口中有一個run方法.Runnable接口也是在java.lang中定義

第二種方法主要用于要編寫多線程的類需要從其它類中派生,出于java不能支持類的多繼續的特性來考慮.

有關線程的幾個重要概念:線程體,線程狀態,ThreadGroup類

線程體:

線程體在run()方法中編寫.

可以通過重要Thread中的run()方法或者實現Runnable接口中的Run方法.

線程的狀態:

線程有四個狀態

(1)新線程態

使用new運算符創建了一個Thread,并且在未調用start()方法之前

此時,線程只是空的對象,系統未分配任何系統資源.

可用stop()把新線程變為死亡態

(2)可運行態

調用了start(),線程進入可運行態.

此時,線程獲得了必要的系統資源,并調用已經實現的run()方法.

此時,線程處于就緒狀態,只等待處理器就可以運行了

(3)不可運行態

當調用了suspend()[掛起]方法,sleep()方法,用wait()方法等候一個條件變量或被IO阻塞,線程就可以從運行態變為不可運行態.

要重返可運行態,必須消除原來的不可運行原因:

suspend()掛起的線程再調用resume()[重新開始,恢復]

sleep()時間已經結束

等候的條件變量的擁有對象調用了notify()或notifyAll()方法

(4)死亡態

線程可以自然死亡,如它的run()方法正常退出運行.

也可以被殺死,調用stop()方法.該方法將拋出一個ThreadDeath對象給線程,線程接收到對象后才死亡.

Thread有一個isAlive()方法.當線程處理第二第三種狀態時,返回true,另外兩種返回false.

線程優先級

固定優先級調用,選擇各可運行態的線程中優先級別最高的先運行,同級線程則排隊執行.

新進入可運行態的線程若優先級高也可搶先獲得運行權.

線程默認的優先級是繼承創建它的線程而來的,可調用實現了Thread類的setPriority()方法修改.

一個線程調用yield()方法可以放棄CPU,但當其它的優先級別都比本線程低時,該方法無效.

Daemon[守護進程,后臺程序]線程

該線程為同一進程中的其他線程或對象提供服務.

要定義一個線程為Daemon線程,要調用setDaemon(true)方法,可以通過isDaemon()方法來判斷一個線程是否為Daemon.

線程組

由java.lang中的ThreadGroup類來實現

提供一種機制將多個線程收集成一個對象,在組中一齊處理.如調用一個方法掛起所有組中的線程

要加入某個線程組,需要在創建線程時的構造方法中進行指定.

未指明線程組的,默認放在創建它的線程的同一組中,即當前線程組.

對應于應用程序application,其當前線程組是一個叫main的線程組.

通過getThreadGroup()方法可以查明當前所屬線程組

?

太晚了,未完待續...

?

ThreadGroup類

ThreadGroup中可以包含其它的ThreadGroup類,形成樹狀結構.

它提供一組方法管理一列線程,其它對象可以訪問線程列表.

activeCount()可以獲得組中的線程數.

enumerate()方法可以枚舉組中的線程和其他線程組.

ThreadGroup類中有一些方法允許修改組中所有線程的當前狀態.如resume(),stop(),suspend().這些方法會改變組中每個線程和子組中所有線程的狀態.

同步與鎖定

java語言從最基本的Object類開如就提供也實現線程同步的機制,如有notify(),notifyAll(),wait()這三個方法,它與通過調用synchronized方法進行監視,鎖定對象,保證同一時刻只有一個線程可以取用這個對象(資源)

監視器:

多個線程異步地執行,試圖同時訪問一個對象,因些出現錯結果,這種叫競爭條件問題.

監視器結合條件變量和鎖定數據的功能,并鎖的線程進行監視器之后呢,其它線程不能進入,直到被鎖的線程退出監視器.

程序中能使并行線程訪問共同數據對象的代碼段稱為關鍵部分,用synchronized關鍵字進行標記.

標記在方法上,該方法被稱了同步方法,其鎖定的是一個對象.

如果該方法是一靜態方法,則鎖定的是一個類.

一個同步方法對應有一個監視器,當一對象調用一同步方法時,就要先獲得監視器,然后給對象加上鎖,否則,只是等待鎖被釋放.

wait()方法:

已知該方法讓當前線程進入不可運行態,等待某種條件的改變,線程將持續等待到其它線程調用notify()和notifyAll()方法來通知它.

當線程調用wait時,會自動釋放監視器,當退出等待狀態時,重新獲得監視器.

notify()和notifyAll()方法:

notify()喚醒一個調用了當前對象的wait()方法而進入等待狀態的線程,但并喚醒的線程并沒有馬上運行,它必須等到時當前線程退出sysnchronized塊,釋放了對象鎖之后,被喚醒的線程才能有機會獲得鎖并開始運行.

關于同步與鎖定的一般使用形式如下:

public class Test {public synchronized void go(){while(條件!=true)wait();邏輯處理;notify();} } ? 死鎖(DeadLock): 當發生死鎖時,可以向一個線程拋出一個ThreadDeath對象殺死該進程. 調用wait()后,會釋放監視器,讓其它線程獲得運行機會,避免死鎖.

轉載于:https://www.cnblogs.com/laizhd/archive/2011/08/14/2137674.html

總結

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

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

主站蜘蛛池模板: 成年人福利 | 国产人妻一区二区三区四区五区六 | 六月婷婷综合网 | 日本三级中文 | 日本三级中文字幕 | 少妇精品一区二区 | 九九久久精品视频 | 日韩经典一区二区 | 视频在线一区二区 | 狠狠天堂| 综合一区在线 | 成人三级晚上看 | 性爱视频免费 | 亚洲一级无毛 | 成年视频在线观看 | 日韩va在线观看 | 免费国产黄色 | 欧美在线一区二区三区 | 九一精品国产 | 波多野吉衣中文字幕 | 国产精品国产三级国产aⅴ原创 | 91嫩草香蕉| www.555国产精品免费 | 国产三级中文字幕 | 欧美亚洲影院 | 国产亚洲精品久久久久久久久动漫 | 久久黄网站 | 亚洲乱轮视频 | 亚洲精品资源在线 | 日韩视频在线免费播放 | 亚洲狠狠爱| 三年大全国语中文版免费播放 | 在线精品免费视频 | 最新国产精品自拍 | 国产成人愉拍精品久久 | www.香蕉.com| 在线亚洲人成电影网站色www | 琪琪久久 | 日韩黄色精品 | 天天摸天天碰天天爽天天弄 | 午夜在线视频免费观看 | 日韩精品区 | 狂野少女电影在线观看国语版免费 | 天天综合日韩 | 99精品视频在线免费观看 | 免费在线观看国产精品 | 国产精品色哟哟 | 日本性高潮视频 | 东方伊甸园av在线 | 亚洲一区二区观看 | 亚洲另类天堂 | 小泽玛利亚一区二区三区视频 | 超碰人人在线观看 | 91免费看. | 91在线观看免费高清 | 欧美精品久久久久性色 | 求一个黄色网址 | av的天堂 | 免费网站观看www在线观 | 亚洲九色| 91精品国产乱码久久久 | 72pao成人国产永久免费视频 | 摸摸摸bbb毛毛毛片 午夜爽爽影院 | 97超碰人 | 超碰caoprom | 国产午夜精品久久久久久久久久 | 亚洲自啪 | 成人交性视频免费看 | 国产美女免费网站 | 亚洲一级在线播放 | 久久夜视频| 黄色三级免费网站 | 欧美视频一区二区三区 | 欧美久久影院 | 涩涩涩999 | 国产网友自拍视频 | 男女免费视频网站 | 黄色小视频国产 | 国产乱人伦精品一区二区 | 国产伦精品一区 | 无码日韩精品一区二区 | 91pron在线 | 亚洲性图一区二区三区 | 日韩欧美国产片 | 欧美性猛交富婆 | 国产粉嫩在线 | 华人永久免费视频 | 少妇高潮一区二区三区四区 | 国产日韩激情 | 日本护士做爰视频 | 欧美性猛交69 | 国产精品探花一区二区在线观看 | 日本一区中文 | 欧美一区2区| 99久久久无码国产精品衣服 | 欧美一级片播放 | 九九在线| 就爱啪啪网 | 久久不卡免费视频 |