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.

主站蜘蛛池模板: 国产精品密蕾丝视频| 日韩欧美成人高清在线观看| 99国产精品国产| 欧美高清国产| 在线一级毛片| 露脸一二三区国语对白| 国产高清色视频免费看的网址| 青草娱乐极品免费视频| 亚洲中文字幕在线一区播放| 色哟哟国产精品一区二区| 四虎永久在线视频| 国产区网址| 国产精品成人一区二区不卡| 免费看黄片一区二区三区| 深夜福利视频一区二区| 韩日无码在线不卡| 91香蕉国产亚洲一二三区| 亚洲无码高清视频在线观看 | 直接黄91麻豆网站| 性激烈欧美三级在线播放| 国产麻豆精品在线观看| 久久美女精品| 99视频在线观看免费| 久热99这里只有精品视频6| 国内精品久久人妻无码大片高| 真实国产乱子伦高清| 国产簧片免费在线播放| 91九色国产porny| 亚洲国产精品成人久久综合影院| 免费人欧美成又黄又爽的视频| 国模沟沟一区二区三区| 一本一本大道香蕉久在线播放| 久久精品人人做人人爽电影蜜月 | 国产杨幂丝袜av在线播放| 在线看免费无码av天堂的| 色噜噜在线观看| 欧美福利在线| 免费国产好深啊好涨好硬视频| 国产日韩精品一区在线不卡| 91美女视频在线| 国产高清在线观看| 国产成人精品日本亚洲| 日本成人在线不卡视频| 亚洲国产清纯| 国产综合无码一区二区色蜜蜜| 在线亚洲天堂| 免费看黄片一区二区三区| 92午夜福利影院一区二区三区| 国产毛片基地| 日韩毛片基地| 四虎影院国产| 亚洲最猛黑人xxxx黑人猛交| 呦女精品网站| 久久久噜噜噜久久中文字幕色伊伊| a免费毛片在线播放| 天天做天天爱天天爽综合区| 国产在线精品网址你懂的| 在线人成精品免费视频| 日本一区二区三区精品AⅤ| 国产综合色在线视频播放线视| 欧美午夜小视频| 日韩精品一区二区三区视频免费看| 国产一级裸网站| 欧洲亚洲一区| 亚洲第一香蕉视频| 日韩国产综合精选| 久久精品嫩草研究院| 国产高颜值露脸在线观看| 99re视频在线| 真实国产精品vr专区| 少妇精品在线| 精品无码一区二区三区在线视频| 国产v精品成人免费视频71pao| 久久精品免费国产大片| 99久久人妻精品免费二区| 综1合AV在线播放| 日本高清在线看免费观看| 在线观看国产网址你懂的| 国产精品v欧美| 欧美a级在线| 亚洲欧美在线综合图区| 2021国产在线视频|