亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java多線程訪問(wèn)控制管理分析

        2014-10-21 19:57:17梁德華
        關(guān)鍵詞:多線程同步控制

        摘 要:本文分析并描述了Java多線程訪問(wèn)控制的基本方法和多線程同步訪問(wèn)的控制方法,以及使用優(yōu)先級(jí)解決死鎖問(wèn)題的方法,并且用簡(jiǎn)單語(yǔ)句作說(shuō)明。

        關(guān)鍵詞:Java;多線程;同步控制

        中圖分類號(hào):TP312

        1 Java多線程的基本控制

        在Java中,一個(gè)線程從創(chuàng)建到死亡稱為線程的一個(gè)生命周期,它的生命周期有多個(gè)不同狀態(tài),一般為:Enabled、Running、Sleeping、Joining、Waiting、Locking。對(duì)于線程的這些狀態(tài),Java在Thread類中定義了一些方法可以在程序中手動(dòng)控制。要結(jié)束一個(gè)線程的運(yùn)行,可以使用stop()方法。但是stop()方法并不是非常安全的,它會(huì)強(qiáng)制中止一個(gè)線程的運(yùn)行,但是會(huì)釋放這個(gè)線程鎖住的所有對(duì)象,這些對(duì)象被解鎖后就可能被其他的線程直接訪問(wèn),導(dǎo)致錯(cuò)誤的結(jié)果。因此,要中止一個(gè)線程,最好是設(shè)置一個(gè)標(biāo)志位,在run()方法中根據(jù)這個(gè)標(biāo)記來(lái)判斷是否繼續(xù)保持狀態(tài)。要中止線程的時(shí)候,可以使用setRunFlag()方法。

        在暫停和恢復(fù)線程執(zhí)行時(shí)也會(huì)出現(xiàn)同樣的問(wèn)題??梢允褂肨hread類中supspend()和resume()方法來(lái)暫停和恢復(fù),但不建議使用,它們?nèi)菀自斐删€程的死鎖。解決的方法也是使用一定的標(biāo)志變量。使用setsuspendFlag(true)可以暫停線程的執(zhí)行,暫停時(shí)間的指定是通過(guò)sleep()方法來(lái)實(shí)現(xiàn),暫停結(jié)束就回到等待隊(duì)列,不是恢復(fù)執(zhí)行狀態(tài)。所以sleep()方法不能精確控制線程計(jì)劃工作的時(shí)間尺度。

        下面用模擬一個(gè)龜兔接力跑的實(shí)例來(lái)演示Java多線程的sleep()方法的控制。模擬的接力跑中有一只烏龜和一只兔子。當(dāng)兔子跑完400米將接力棒交給烏龜,烏龜跑完400米后結(jié)束。部分代碼如下:

        2 Java多線程的同步控制

        多線程程序中,多個(gè)線程可以共享相同資源,這可能導(dǎo)致沖突。Java使用同步機(jī)制來(lái)解決這個(gè)問(wèn)題。這個(gè)同步機(jī)制使用synchronized關(guān)鍵字,它主要用于多線程共享數(shù)據(jù)的同步,使用加鎖的機(jī)制,控制變量或代碼塊在某個(gè)時(shí)間段只能被一個(gè)線程訪問(wèn)。

        Java中synchronized既可作為方法的修飾符,鎖住方法,也可在方法內(nèi)部鎖住部分語(yǔ)句。Synchronized方法和synchronized代碼塊在使用時(shí)是有區(qū)別的。將訪問(wèn)共享數(shù)據(jù)的方法加上synchronized,例如把synchronized當(dāng)作方法修飾符:

        Public synchronized void m1(){……}

        這就是同步方法。當(dāng)某個(gè)線程調(diào)用這個(gè)同步方法時(shí),會(huì)開(kāi)始執(zhí)行直到完畢為止,其它想要調(diào)用這個(gè)方法的線程會(huì)進(jìn)入阻塞狀態(tài),一直到這個(gè)方法獲得釋放為止。使用synchronized來(lái)修飾一個(gè)比較大的方法時(shí),也會(huì)鎖住其它一些不需要鎖住的數(shù)據(jù),導(dǎo)致程序效率下降。Synchronized塊則是把方法內(nèi)的某段代碼使用synchronized來(lái)修飾,可以減少同步范圍。例如:Public void m1(){ …… Synchronized(so){ …… }}

        使用synchronized修飾時(shí),就代表著同步機(jī)制啟動(dòng),某個(gè)時(shí)刻只能某個(gè)線程訪問(wèn)數(shù)據(jù)和資源,阻止其它線程訪問(wèn),這種狀態(tài)即使出現(xiàn)阻塞和死鎖現(xiàn)象也不會(huì)解除。

        3 Java多線程的死鎖問(wèn)題

        為了控制資源的訪問(wèn)沖突,需要使用synchronized對(duì)訪問(wèn)資源進(jìn)行加鎖,但加鎖會(huì)帶來(lái)一個(gè)潛在的危險(xiǎn):死鎖。如果兩個(gè)或兩個(gè)以上的線程在等待兩個(gè)或兩個(gè)以上的鎖被釋放,但實(shí)際上這些鎖根本就不會(huì)被解鎖,那么這些線程就會(huì)進(jìn)入無(wú)限等待的狀態(tài),稱之為死鎖。線程等待解鎖的這種狀態(tài)有時(shí)也被稱作堵塞。死鎖例子部分代碼如下:

        4 Java多線程的優(yōu)先級(jí)

        在多線程編程中要預(yù)防死鎖的發(fā)生,不然死鎖后會(huì)導(dǎo)致浪費(fèi)大量時(shí)間和資源。防止死鎖的方法很多,最重要的就是防止循環(huán)等待的發(fā)生??梢允褂迷O(shè)置線程的優(yōu)先級(jí)來(lái)解決這一問(wèn)題。同一時(shí)刻會(huì)有很多在排隊(duì)等待資源的線程,它們各自的重要性是不同的??梢再x予每個(gè)線程不同的優(yōu)先級(jí),讓任務(wù)更急的線程獲得更高的優(yōu)先級(jí),更快的進(jìn)入執(zhí)行狀態(tài)。

        Java中提供了10個(gè)等級(jí)的線程優(yōu)先級(jí),最低為1,最高為10,默認(rèn)優(yōu)先級(jí)為5。對(duì)于一個(gè)新創(chuàng)建的線程,如果沒(méi)有指定優(yōu)先級(jí),它的優(yōu)先級(jí)將和它的父線程優(yōu)先級(jí)一致。使用setPriority()方法可以為線程指定優(yōu)先級(jí)。

        例如:int newPrio=Thread.currentThread( ).getPriority( )+1;

        Thread.currentThread( ).setPriority(newPrio);

        5 結(jié)束語(yǔ)

        Java多線程編程可以合理的調(diào)用多項(xiàng)任務(wù),功能非常強(qiáng)大。但是多線程共享數(shù)據(jù)或資源時(shí)會(huì)導(dǎo)致執(zhí)行的錯(cuò)誤,因此多線程訪問(wèn)控制管理機(jī)制在解決數(shù)據(jù)不一致性、資源沖突等問(wèn)題時(shí)是非常有用的。高質(zhì)量的使用Java多線程訪問(wèn)控制管理機(jī)制可以提高程序運(yùn)行效率,縮短任務(wù)執(zhí)行的時(shí)間。

        參考文獻(xiàn):

        [1]明日科技.Java從入門(mén)到精通(3版)[M].北京:清華大學(xué)出版社,2013.

        [2]路勇.Java多線程同步問(wèn)題分析[J].軟件,2012(04):31-33.

        作者簡(jiǎn)介:梁德華(1977-),男,江西瑞昌人,華中科技大學(xué)軟件工程碩士,講師,研究方向:軟件工程、軟件技術(shù)教學(xué)。

        作者單位:江西旅游商貿(mào)職業(yè)學(xué)院 藝術(shù)傳媒與計(jì)算機(jī)分院,南昌 330100

        猜你喜歡
        多線程同步控制
        基于EtherCAT網(wǎng)絡(luò)的金剛線多線切割機(jī)雙主軸同步控制
        Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
        基于多線程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        網(wǎng)頁(yè)爬蟲(chóng)技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線程的高速磁盤(pán)鏡像算法
        基于云模型的舵機(jī)同步控制
        基于廣義預(yù)測(cè)的雙轉(zhuǎn)動(dòng)掃描系統(tǒng)同步控制
        一個(gè)具有完全四翼形式的四維混沌系統(tǒng)同步控制
        少妇被猛烈进入中文字幕| 亚洲一区二区综合色精品| 激情亚洲的在线观看| 日本女同av在线播放| 亚洲国产精品久久艾草| 亚洲一线二线三线写真| 无码中文日韩Av| 亚洲va中文字幕无码久久不卡 | 欧美 日韩 人妻 高清 中文| 色偷偷久久一区二区三区| 久久国产精99精产国高潮| 国产偷国产偷亚洲高清| 精品香蕉99久久久久网站| 精品久久久久久久久久中文字幕| 五月婷婷影视| 国产诱惑人的视频在线观看| 国产av一区二区三区天堂综合网| 久久久久久成人毛片免费看| 91精品在线免费| 国产一区二区黄色网页| 少妇高潮流白浆在线观看| 亚洲男人天堂网站| 色se在线中文字幕视频| 香蕉久久一区二区不卡无毒影院| 国产精品白丝喷水在线观看| 国产69口爆吞精在线视频喝尿| 蓝蓝的天空,白白的云| 大学生粉嫩无套流白浆| 国产激情з∠视频一区二区| 素人系列免费在线观看| 日韩精品免费一区二区三区观看| 国产绳艺sm调教室论坛| 亚洲国产成人久久综合一区77| 亚洲精品一区二区三区四区| 亚洲av日韩av女同同性| 色窝窝免费播放视频在线| 精品久久久亚洲中文字幕| 亚洲精品在线免费视频| 亚洲日本va中文字幕| 自拍亚洲一区欧美另类| 国产熟女自拍av网站|