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

同步機制實現(xiàn)多線程有序訪問資源

2015-07-27 07:38:34江西信息應(yīng)用職業(yè)技術(shù)學(xué)院計算機技術(shù)系南昌330043
山東工業(yè)技術(shù) 2015年19期
關(guān)鍵詞:同步資源

薛 嵐(江西信息應(yīng)用職業(yè)技術(shù)學(xué)院 計算機技術(shù)系,南昌 330043)

同步機制實現(xiàn)多線程有序訪問資源

薛嵐
(江西信息應(yīng)用職業(yè)技術(shù)學(xué)院計算機技術(shù)系,南昌330043)

摘要:當多個線程競爭訪問同一個資源時,Java提供了線程同步這種機制來協(xié)調(diào)各個線程的訪問。由于線程同步的復(fù)雜性,很多時候開發(fā)人員弄不清楚資源是什么、線程何時處于競爭狀態(tài),線程同步如何使用等問題,本文將對線程同步問題做深入探討。

關(guān)鍵詞:線程;同步;資源;鎖

1 什么是線程同步

多線程是指在同一個程序中同時存在幾個執(zhí)行體,按幾條不同的執(zhí)行路徑共同工作的情況。Java允許多線程并發(fā)控制,當多個線程訪問同一資源時,也就是多個線程同時競爭一個資源同時操作一個可共享的資源變量時(如數(shù)據(jù)的增刪改查),將會導(dǎo)致數(shù)據(jù)不準確,相互之間產(chǎn)生沖突,如果協(xié)調(diào)不好就會出現(xiàn)數(shù)據(jù)不一致的問題。因此當多個線程訪問同一資源時,因此加入同步鎖讓某一個線程獨占此資源,也就是鎖定該資源,其它線程在此時此刻不能訪問該資源,以避免在該線程沒有完成操作之前,被其他線程的調(diào)用,稱為線程同步。從而保證了該變量的唯一性和準確性。

2 線程同步代碼表示

在Java代碼中運用線程同步機制,有兩個關(guān)鍵處的代碼需要完成:1、當多個線程競爭訪問同一個對象或同一變量時,該對象或變量為競爭資源標識為private;2、當某一個方法或某一段代碼在某一個時刻只能被一個線程獨自訪問,用synchronized關(guān)鍵字標識方法或代碼為同步。synchronized只能標記非抽象的方法,不能標識成員變量。

3 同步方式

(1)synchronized方法。用synchronized關(guān)鍵字修飾一個方法,該方法為同步方法。Java中的每個對象資源都有一個鎖,或者叫做監(jiān)視器,當一個線程訪問某個對象的同步方法時,該對象被鎖住,其他任何線程無法去訪問該對象的同步方法了,相當于對象被一個線程獨占。直到該線程線程執(zhí)行方法完畢后(或者是拋出了異常),才將該對象解鎖,釋放對象資源,其他線程才有可能再去訪問該對象的同步方法。

用同步方法實現(xiàn)類成員變量的訪問:Java系統(tǒng)為每個類實例都配了一把鎖,當要用類實例來調(diào)用同步方法時需要獲得這個類實例的鎖才能執(zhí)行,此時進入線程運行狀態(tài),否則就為線程阻塞。

同步方法一旦被執(zhí)行執(zhí)行,其它類實例將無法訪問,直到同步方法返回釋放鎖,其它類實例才有可能訪問此方法。被阻塞的其它線程才能獲得該鎖,重新進入可執(zhí)行狀態(tài)。這種機制保證了類中所有同步成員方法在同一時刻只有一個可被類實例訪問,因為只有獲得了類實例對應(yīng)的鎖的同步成員方法才能被訪問,從而有效避免了類成員方法的訪問矛盾。在Java中,除了類實例以外,每一個類也對應(yīng)一把鎖,因此也可將類的靜態(tài)成員方法聲明為同步,以避免對類的靜態(tài)成員的訪問沖突。

同步方法的缺點:有些方法若聲明為同步將會很大程度地降低執(zhí)行效率,線程類的run()方法不能聲明為同步,否則它對本類中的任何同步方法的調(diào)用都不會成功。同步機制需要占用大量內(nèi)存,而且如果使用不當易造成死鎖。

(2)synchronized塊。將需要被線程獨占訪問的代碼用大括號括起來前面標識為synchronized,則系統(tǒng)自動為該段語句塊加上內(nèi)置鎖,從而構(gòu)成同步代碼塊。

同步代碼塊中的代碼必須獲得類對象或類的鎖才能被線程訪問執(zhí)行。由于任何代碼塊都可以標識為同步,并且可獲得任意對象上的鎖,所以同步代碼塊運用方便靈活。

(3)使用特殊域變量實現(xiàn)線程同步。1).volatile關(guān)鍵字為域變量的訪問提供了一種免鎖機制;2).使用volatile修飾域相當于告訴虛擬機該域可能會被其他線程更新;3).因此每次使用該域就要重新計算,而不是使用寄存器中的值;4).volatile不會提供任何原子操作,它也不能用來修飾final類型的變量

(4)使用重入鎖實現(xiàn)線程同步。可重入的互斥鎖具有與使用同步方法和語句所訪問的隱式監(jiān)視器鎖相同的一些基本行為和語義,但功能更強大。它由最近成功獲得鎖,并且還沒有釋放該鎖的線程擁有。

(5)使用局部變量實現(xiàn)線程同步

4 同步的特點

(1)無論方法還是代碼標識為同步,鎖住的資源是指對象,而且只要不是多個線程同時訪問同步方法和代碼塊,其還可以被其他線程的對象訪問,。

(2)每個對象只對應(yīng)一個鎖,即一個對象只與一個鎖相關(guān)聯(lián)。

(3)使用同步機制時需要謹慎,能不用同步實現(xiàn)的操作就不用同步實現(xiàn)。因為使用同步需要占用很大的系統(tǒng)內(nèi)存,開銷很大就有可能造成死鎖。

(4)當兩個線程同時搶占同一個對象中的同步方法或變量時,只能有一個線程可以執(zhí)行訪問同步方法或變量。另一個線程進入暫時等待狀態(tài)必須等待當前線程執(zhí)行完才能訪問。

(5)當一個線程訪問對象中的一個同步代碼塊時,這個對象中的其它同步代碼塊也會被鎖住,也就是對其它線程關(guān)閉。

(6)當一個線程訪問對象的一個同步代碼塊時,該對象中的非同步方法或變量不受影響,可以被其它線程訪問。

(7)當一個線程訪問一個對象的某個同步代碼塊時,該對象的對象鎖就自動賦給了此線程。即此線程獨占該對象的所有同步方法和變量,禁止同一時刻其它線程對該對象上任何同步方法和變量的訪問。

5 線程同步小結(jié)

(1)線程同步機制是為了防止多個線程競爭同一資源時由于沒協(xié)調(diào)好而出現(xiàn)線程對資源數(shù)據(jù)修改的不一致。

(2)線程同步機制需要通過鎖來實現(xiàn),每個對象都有一把鎖。當一個線程獲得了一個對象上的鎖,其它線程在同一時刻就不能訪問該對象上的所有同步方法和同步變量

(3)對于靜態(tài)同步方法,鎖是針對這個類的,鎖對象是該類的Class對象。靜態(tài)和非靜態(tài)方法的鎖互不干預(yù)。一個線程獲得鎖,在一個同步方法中訪問另一個對象上的同步方法時,會獲取這兩個對象鎖。

(4)使用同步時,要注意在是哪個對象上同步,否則會出現(xiàn)對象不一致。

(5)當多個線程競爭一個資源時,只有獲得對象鎖的線程才能訪問資源,沒有獲取對象鎖的線程將處于暫時阻塞狀態(tài)。

(6)死鎖是多個線程需要獲得其它線程占有的資源后才能完成操作,而每個線程又都不肯釋放自己占有的資源,造成永遠相互等待。

參考文獻:

[1]張榮海.Java多線程同步方法的研究[J].黑龍江科技信息,2003 (05).

作者簡介:薛嵐(1980-),女,江西南昌人,碩士,講師,研究方向:軟件技術(shù)專業(yè)Java方向。

猜你喜歡
同步資源
讓有限的“資源”更有效
基礎(chǔ)教育資源展示
一樣的資源,不一樣的收獲
資源回收
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
素質(zhì)教育理念下藝術(shù)教育改革的思路
政府職能的轉(zhuǎn)變與中國經(jīng)濟結(jié)構(gòu)調(diào)整的同步
商情(2016年42期)2016-12-23 14:26:58
公共藝術(shù)與城市設(shè)計的協(xié)調(diào)與同步
有源應(yīng)答器DBPL解碼算法研究及FPGA實現(xiàn)
一種新型雙軌同步焊接的焊接裝置
主站蜘蛛池模板: 亚洲欧美日本国产综合在线 | 综合色婷婷| 亚洲欧美另类色图| 在线观看国产黄色| 欧美劲爆第一页| 国产小视频a在线观看| 国产精品网拍在线| 欧美日韩专区| 成人免费一级片| 天天综合色天天综合网| 色综合国产| 亚洲欧美另类专区| 免费一级毛片在线播放傲雪网| 99久久精彩视频| 91网在线| 中文字幕首页系列人妻| 欧美中文字幕一区二区三区| 国产精品七七在线播放| 黄色网在线| 欧美视频在线第一页| 99久久无色码中文字幕| 热re99久久精品国99热| 91九色国产在线| 亚洲人成亚洲精品| 一本大道视频精品人妻| 97国产精品视频自在拍| 一本一本大道香蕉久在线播放| 又粗又硬又大又爽免费视频播放| 91高清在线视频| 国产美女主播一级成人毛片| 国产成人综合亚洲欧洲色就色| 日韩精品中文字幕一区三区| 国产成人精品2021欧美日韩| 欧洲高清无码在线| 在线观看精品国产入口| 国模视频一区二区| V一区无码内射国产| 99久久国产综合精品2023| 成人免费网站久久久| 99一级毛片| 亚洲精品成人福利在线电影| 亚洲中文字幕无码爆乳| 亚洲精品国产乱码不卡| AV不卡在线永久免费观看| a色毛片免费视频| 久久五月天国产自| 伊人久久大香线蕉影院| 新SSS无码手机在线观看| 国产精品无码作爱| 国产欧美一区二区三区视频在线观看| 国产成人永久免费视频| 欧美成人二区| 日本人妻一区二区三区不卡影院| 国产成年无码AⅤ片在线| 91伊人国产| 亚洲第一视频免费在线| 国产剧情伊人| 久久这里只精品热免费99| 亚洲人成影视在线观看| 一级成人欧美一区在线观看| 国产欧美日韩资源在线观看| 国产在线八区| 一级毛片免费的| 亚洲va视频| 亚洲av无码成人专区| 成年看免费观看视频拍拍| 欧美精品xx| 欧美不卡在线视频| 欧美精品成人一区二区视频一| 亚洲精品无码人妻无码| 老司机久久99久久精品播放| 国产高清不卡视频| 香蕉色综合| 国产99欧美精品久久精品久久| 亚洲高清在线天堂精品| 91色爱欧美精品www| 亚洲国内精品自在自线官| av天堂最新版在线| 国产91小视频在线观看| 98精品全国免费观看视频| 伊人精品成人久久综合| 无码人妻免费|