版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、淺析 Java 多線程程序設計機制多線程是Java語言的一大特性,多線程就是同時存在N個執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況。程序,進程,線程,可以從不同的角度去理解。程序就是一段靜態(tài)的代碼,可以理解成一組計算機命令的集合.進行就是這個程序一次動態(tài)的執(zhí)行過程,從代碼的加載到執(zhí)行完畢的一個過程。線程是一個比進程小的單位,一個進程再執(zhí)行的過程中可以產(chǎn)生多個線程,每個線程也是由生產(chǎn)到銷毀,可以理解成是進行的子集。我個人用一個覺得還算恰當?shù)谋扔鱽肀扔魅摺Q客戶端就是一個程序,登陸一個QQ就是開始了這個程序的一個進程,再Q(mào)Q上發(fā)送消息給好友就貌似這個進程中的一個線程。不知道這樣比喻恰當否?線程
2、也是有狀態(tài)和聲明周期的,每個Java程序都會有一個缺省的主線程,對于應用程序applcation來說main方法就是一個主線程.Java語言使用的是Thread類及其子類的對象來表示線程的.創(chuàng)建一個新的線程的生命周期如下狀態(tài):1) 新建:當一個Thread類或者其子類的對象被聲明并創(chuàng)建時,新的線程對象處于新建狀態(tài),此時它已經(jīng)有了相應的內(nèi)存空間和其他資源.2) 就緒:處于新建狀態(tài)的線程被啟動后,將進入線程隊列排隊等待CUP服務,這個時候具備了運行的條件,一旦輪到CPU的時候,就可以脫離創(chuàng)建它的主線程獨立開始自己的生命周期.3) 運行:就緒的線程被調(diào)度并獲得CUP的處理邊進入了運行狀態(tài),每一個Th
3、read類及其子類的對象都有一個重要的run()方法,當線程對象被調(diào)度執(zhí)行的時候,它將自動調(diào)用本對象的run()方法,從第一句代碼開始執(zhí)行。所以說對線程的操作應該寫到run()方法中.4) 阻塞:一個正在執(zhí)行的線程如果再某種情況下不能執(zhí)行了.進入阻塞狀態(tài),這個時候它不能進入排隊狀態(tài),只有引起了阻塞的原因消失的時候,線程才可以繼續(xù)進入排隊狀態(tài)等待CUP處理。5) 死亡:處于死亡狀態(tài)的線程不具有繼續(xù)執(zhí)行的能力,線程死亡主要的原因是正常運行的線程完成了全部工作,即執(zhí)行完了run()方法,另外就是被提前強制的終止了。線程的調(diào)度也是有優(yōu)先級別的,就是說同樣的排列優(yōu)先級高可以提前被CPU處理,主要分三個級
4、別,高中低.分別代表的數(shù)字是10.5.1分別有三個常量代表不可以被改變。最小優(yōu)先級的常量是MIN_PRIORITY,普通的優(yōu)先級的常量是NORM_PRIORITY,最高的優(yōu)先級的常量是MAX_PRIORITY一般主線程的優(yōu)先級是普通,另外可以通過Thread類的setPriority(int a)方法來修改系統(tǒng)自動設置的線程優(yōu)先級。Java中編程實現(xiàn)多線程應有兩種途徑,一種是創(chuàng)建自己的線程子類,另外是實現(xiàn)一個接口Runnable。無論是那種途徑最終讀需要使用Thread類及其方法。Thread類有兩種構(gòu)造方法,public Thread()用來創(chuàng)建一個線程對象。public Thread(Ru
5、nnable r)創(chuàng)建線程對象,參數(shù)r成為被創(chuàng)建的目標對象。這個目標必須實現(xiàn)Runnbale接口,給出該接口的run()方法的方法體,再方法體中操作.用兩個構(gòu)造方法創(chuàng)建完的線程就是一個新建的狀態(tài),等待處理.然后啟動線程的start()方法,啟動線程對象,線程進入排隊狀態(tài)也就是就緒狀態(tài).然后線程操作run()方法這個方法里的內(nèi)容是被系統(tǒng)處理的內(nèi)容.如果想使線程進入休眠狀態(tài)可以調(diào)用sleep()方法,可以給一個參數(shù),代表休眠的毫秒.如果給兩個參數(shù)代表那秒。終止線程用yield()方法來完成.判斷線程是否銷毀可以用idAlive()方法判斷線程是否活著。Runnable接口只有一個方法run()方法
6、,我們實現(xiàn)這個接口把要操作的代碼寫到這個方法中,然后再把實現(xiàn)了整個接口的類的實例傳給Therad類的構(gòu)造方法即可操作線程。線程同步是一個再處理線程的時候需要注意的問題,同步方法要用synchronized關鍵字類修飾,被這個關鍵字修飾后,當一個線程A使用這個方法后,其它線程想使用這個方法就必須等待,知道線程A使用完該方法后方可使用.下面我寫一個例子來說明線程同步,這個例子有兩個線程會計和出納,他們共同有一個賬本.他們倆都可以存取方法對賬本進行訪問,會計使用存取方法的時候?qū)懭氪驽X的記錄,出納則寫入取錢的記錄。因此會計使用賬本的時候出納被禁止使用,反之也是如此。就是一個人使用另外一個人必須等待。下
7、面我通過一個小程序Applet來實現(xiàn)這個事:import Java.applet.*;import Java.awt.*;import Java.awt.event.*;public class MyThread extends Applet implements Runnable int money = 100;TextArea text1 = null;TextArea text2 = null;Thread Kuaiji = null;Thread Chuna = null;public void init() Kuaiji = new Thread(this);Chuna = new
8、Thread(this);text1 = new TextArea(20,8);text2 = new TextArea(20,8);add(text1);add(text2);public void start() Kuaiji.start();Chuna.start();public synchronized void Cunqu(int number) if(Thread.currentThread() = Kuaiji) for(int i=1;i=3;i+) money = money + number;try Thread.sleep(1000);catch(Exception e
9、)text1.append(n+money);else if(Thread.currentThread() = Chuna) for(int i=1;i=2;i+) money = money - number/2;try Thread.sleep(1000);catch(Exception e)text2.append(n+money);public void run() if(Thread.currentThread()=Kuaiji | Thread.currentThread()=Chuna) for(int i=1;i=3;i+) Cunqu(30); 當一個線程使用同步方法中的某個變量,而此變量又需要其他線程修改后才能符合本線程的需要,那么可以再同步方法中使用wait()方法,使本線程等待,并允許其他線程使用這個同步方法.用notfyAll()方法同志所有的由于使用這個同步方法的處于等待的線程結(jié)束等待進入同步方法中運行,如果使使用notfy()就是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無窮大填空題目及答案
- 藥品庫房工作制度
- 養(yǎng)老院老人心理關愛制度
- 養(yǎng)老院老人日常生活照料制度
- 養(yǎng)老院緊急救援制度
- 奇哥作文題目及答案
- 辦公室員工培訓經(jīng)費使用制度
- 鎮(zhèn)安全生產(chǎn)管理制度
- 混合物的物理題目及答案
- 肺脹病中醫(yī)護理方案
- 山東省濟南市2026屆高三第一次模擬考試英語試題(含解析)
- 2026年中央廣播電視總臺招聘124人備考題庫及答案詳解(奪冠系列)
- 電磁輻射環(huán)境下的職業(yè)健康防護
- 2026年及未來5年中國芋頭行業(yè)市場發(fā)展現(xiàn)狀及投資方向研究報告
- 馬年猜猜樂【馬的成語33題】主題班會
- 環(huán)衛(wèi)質(zhì)量規(guī)范及考核制度
- 江蘇省淮安市2025-2026學年高三上學期期中考試歷史試題(解析版)
- 湖南省衡陽市衡南縣2024-2025學年高一上學期期末考試數(shù)學試題(A卷)(含答案)
- 2025年湖南生物機電職業(yè)技術學院單招職業(yè)適應性考試模擬測試卷附答案
- 期末測試卷(含答案)2025-2026學年語文三年級上冊統(tǒng)編版
- 氣管腫瘤術后護理查房
評論
0/150
提交評論