999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java語言多線程技術應用研究

2011-12-31 00:00:00林鐵瀛
科技創新導報 2011年11期

摘 要:多線程編程是Java語言的一個很重要的特點,它是面向對象程序設計的關鍵技術之一。本文簡要的探討了Java語言多線程的基本技術,就線程的創建、線程控制和調度及線程同步等處理技術做了相關探討。

關鍵詞:多線程 創建 控制 同步 應用

中圖分類號:G633.3文獻標識碼:A文章編號:1674-098X(2011)04(b)-0022-01

多線程程序是Java語言的一個很重要的特點,在一個Java程序中,可以同時并行運行多個相對獨立的線程。線程是一段完成某個特定功能的語句體,一個線程是一個程序內部單個順序的控制流。多線程是指同一個應用程序中,有多個順序流同時執行,即多線程表示一個程序內部可以同時執行多個線程。多線程的程序能更好地表述和解決現實世界的問題,是計算機應用開發和設計過程的一個必然發展趨勢。

1 線程的創建

在Java程序設計中,創建線程有兩種方法:一個方法是從一個自定義的類(如Mythread)中創建,即讓程序繼承Thread類。例如:Thread t=new Mythread();這個類擴展了Java基礎類庫中的Thread類及其方法。Mythread類中必須替換Thread類中的run()方法。應注意的是,初始化Mythread為類,并不能使對象t作為一個線程開始執行,而必須獨立運行的子語句體放到run()方法(是Thread類中的一個方法)中。再調用線程的star()方法來開始線程的執行,進而依順序調用run()方法。這種創建線程的方法有一個缺陷,即必須擴展Thread類。由于Java是單一繼承,不支持多重繼承,所以不能寫一個多線程的Applet。因為如果寫多線程的Applet的話,就要擴展Applet和Thread類,而這在Java中是不允許的。

由于這個原因,Java給出了另一個創建線程的方法。另一種方法是使用接口。在Java中,用于創建線程的接口是Runable,其過程分為三個步驟:(1)聲明一個實現Runnable接口;(2)生成一個Thread類的對象;(3)將生成的Runnable對象作為參數傳遞給Thread構造方法。當線程開始執行時,它將調用執行Runable接口的相應的run()方法。

2 線程的狀態

在Java語言中,一個完整的線程周期通常有以下5個狀態組成。

2.1 新建狀態

新建狀態是指一個Thread類或者子類被聲明并創建后的狀態。新建線程具有相應的內存空間和其他資源,并且已初始化。

2.2 就緒狀態

處于新建狀態的線程被啟動后,將進入線程隊列等待CPU時間片,此時它已具備了運行的條件。一旦它來享用CPU的資源時,就脫離創建它的主線程獨立開始自己的運行周期。此外,原來處于阻塞狀態的線程被解除阻塞后也將進入就緒狀態。

2.3 運行狀態

當就緒狀態的線程被調度并獲得CPU資源時,進入運行狀態。當線程對象被執行時,它自動調用該對象的run()方法,從第一條語句順序執行。

2.4 阻塞狀態

一個正在被執行的線程在某些特殊情況下(例如,被人為掛起或需要執行輸入或者輸出操作),讓出CPU并暫時終止自己的執行周期,則進入阻塞狀態。阻塞時,它不能進入排隊隊列。只有阻塞的原因被取消,線程才可以轉入就緒狀態。

3 線程的優先級

Java提供了一個線程調度器來監控程序啟動后進入就緒狀態的所有線程。線程調度器按照線程的優先級決定調度哪個線程來執行。線程調度器是搶先式調度,也就是說在當前線程執行過程中,一個更高優先級的線程進入可運行狀態,則這個線程立即被調度執行。Java中線程的優先級從高到低的范圍為1~10,Thread類定義了3個常量,用于選擇常用的優先級:MINPRIORITY(其值為1),NORM-PRIORITY(其值為5,默認值)MAX-PRIORITY(其值為10)。當一個線程剛產生時,繼承該線程的優先級,通常為5,即NORM-PRIORITY,使用getPriority(),可以得到一個線程的優先級;通過調用setPriority()方法,可以更改一個線程的優先級。Setpriority()方法必須帶有一個大于0、小于等于10的整型參數。如果該參數小于1、大于10,則運行時拋出IlegalArgumentExcep-tion。

4 Java多線程技術在手機聯網中的應用

MIDlet是一種java程序的執行機制,手機中所有的MIDlet程序都是由Application Manager Software(AMS,應用程序管理軟件)管理的。當MIDlet初始化后,AMS就會調用MIDlet的startApp()方法,此時MIDlet就進入了Acitiv狀態。在JAVA ME中有些操作可能會導致程序堵塞,比如連接網絡等。如果這些操作與主程序在同一個主線程中完成,那么由于堵塞會造成程序長時間無法返回,也就無法響應用戶的其他操作了。所以,如果我們在commandAction()中進行了聯網的操作,則會造成如上所述的情況。

例如下面一個“Echo Message”實例,手機端向服務器端發送一條消息,服務器得到此消息后直接返回給手機端。首先,創建一個NetworkConnection類來封裝聯網相關的操作,這樣,MIDlet中只需調用此類中的方法就可以完成聯網的操作。接著,我們寫一個MalConnectionMidlet類,它繼承了MIDlet,在commandAction()方法中直接調用NetworkConnection中的方法,而沒有重新創建一個線程。當用戶按下“問候”命令時,就會向服務器發送“Hello World”的消息,然后再得到服務器返回的消息,并顯示在TextBox中。運行程序。當用戶按下“問候”命令后,程序就僵死了,并在Console窗口中得到如下警告。這就是因為沒有使用多線程造成的。就來看看如何使用多線程來解決此問題。新建類Network-Thread,它繼承在Thread,并將原先commandAction()中發送、接收消息的操作移到此類中完成。此時,在commandAction()中,我們創建了新的線程來完成消息的發送和接收。運行程序,可以成功接受到返回的消息,同樣,在移動多媒體的使用過程中也需要應用到多線程。利用手機攝像頭拍照的操作也會引起的堵塞,多線程能很好的解決這些問題。

5 結語

在引入Java多線程技術后,首先,程序能夠同時執行多個任務,處理不同事件的多線程機制中,不同的線程處理不同的任務,他們之間互不干涉。不會由于一處等待而影響其他部分。其次,它們提供了一個充分利用計算機CPU的方法;再次,它能夠提高應用程序的使用率,加快應用程序的響應時間,以及使應用程序更有效地利用系統資源。另外多線程技術不僅用于實時控制編程,它在網絡通迅、數學計算和多媒體編程等方面也有著很廣闊的應用前景。

參考文獻

[1]陽小蘭.Java語言中多線程技術的研究與實現[J].軟件導刊,2007.

[2]李卓玲.Java程序設計實用教程[J].大連:大連理工大學出版社,2003.

主站蜘蛛池模板: 97精品国产高清久久久久蜜芽| 精品一区二区久久久久网站| 99久久免费精品特色大片| 99视频在线精品免费观看6| 久久综合丝袜长腿丝袜| 国产成人免费| 91精品视频播放| 国产精品粉嫩| 午夜视频免费一区二区在线看| 日韩视频精品在线| 欧美在线国产| 男人天堂亚洲天堂| 区国产精品搜索视频| 成人在线天堂| jizz亚洲高清在线观看| jizz在线观看| 国产美女丝袜高潮| 亚洲成人福利网站| 免费看美女自慰的网站| 国产原创第一页在线观看| 中文字幕在线观看日本| 日韩欧美国产三级| 欧美色香蕉| 国产一区二区精品福利 | 成人免费网站久久久| 国产亚洲精品91| 国产va欧美va在线观看| 亚洲日韩AV无码精品| 精品视频第一页| 欧美精品影院| 日本高清免费一本在线观看| 精品久久久久久中文字幕女| 三级欧美在线| 国产导航在线| 日韩精品免费一线在线观看| 97成人在线观看| 亚洲色图欧美一区| 特黄日韩免费一区二区三区| 人妻中文久热无码丝袜| 2021国产乱人伦在线播放| 69精品在线观看| www.99精品视频在线播放| 香蕉蕉亚亚洲aav综合| 欧美精品xx| 久久99国产视频| 国产最爽的乱婬视频国语对白| 亚洲欧美在线综合图区| 国产精品亚洲片在线va| 亚洲欧美日本国产专区一区| 一级黄色片网| 日韩在线1| 国产69精品久久久久孕妇大杂乱 | 中文字幕有乳无码| 亚洲免费三区| 中文字幕色在线| 91精品啪在线观看国产60岁| 国产不卡网| 99精品热视频这里只有精品7| 国产欧美视频综合二区| 亚洲天堂网在线播放| 成年片色大黄全免费网站久久| 992tv国产人成在线观看| 久久午夜夜伦鲁鲁片无码免费| 欧美激情,国产精品| 亚洲日韩精品无码专区| 国产va视频| 欧美在线黄| swag国产精品| 好紧太爽了视频免费无码| 综合色88| 狠狠v日韩v欧美v| 亚洲国产亚综合在线区| 国产精品人莉莉成在线播放| 久久香蕉欧美精品| 国产尤物jk自慰制服喷水| 欧美色香蕉| 国产丝袜无码一区二区视频| 国产麻豆永久视频| 国语少妇高潮| 69av免费视频| 国内精品久久久久鸭| 亚洲天堂啪啪|