大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 好程序員Java學(xué)習(xí)路線之Java并發(fā)

好程序員Java學(xué)習(xí)路線之Java并發(fā)

更新時(shí)間:2019-08-02 13:50:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2646次

  好程序員Java學(xué)習(xí)路線之Java并發(fā)編程,什么是并發(fā)編程?用戶通常認(rèn)為計(jì)算機(jī)在同一時(shí)刻可以做多個(gè)事情是理所當(dāng)然的事情。

  例1:例如你可以一邊聽音樂,一邊玩游戲,同時(shí)還通過聊天工具和別人聊天。假設(shè)你使用的qq音樂播放器在聽音樂,玩的是q-q斗地-主游戲,使用q-q和別人聊天,那么這實(shí)際上是三個(gè)不同的軟件在同時(shí)運(yùn)行,完成三個(gè)不同的事情。

  例2:當(dāng)然我們也不能否認(rèn),在一個(gè)軟件內(nèi),同時(shí)可以完成以上三個(gè)事情:聊天、游戲和音樂。例如你在玩q-q斗地-主,以便在打牌,播放了背景音樂,同時(shí)你還可以和其他牌友聊天,發(fā)一句"我等的花兒也謝了",這實(shí)際上是一個(gè)軟件可以同時(shí)完成三個(gè)不同的事情。

  不管是那種情況,我們應(yīng)該知道的是,并發(fā)編程指的是在同一時(shí)刻執(zhí)行多個(gè)任務(wù)。

  java并發(fā)基礎(chǔ)

  線程本身有很多優(yōu)勢,比如可以發(fā)揮多處理器的強(qiáng)大能力、建模更加簡單、簡化異步事件的處理、是用戶界面的相應(yīng)更加靈敏,但是更多的我們面對(duì)的是安全性問題,例如:

  public class Concurrence{ private int value; /*返回一個(gè)唯一的數(shù)值*/ public int getValue(){ return value++; }}

  Concurrence的問題在于,如果執(zhí)行時(shí)機(jī)不對(duì),那么兩個(gè)線程在調(diào)用getValue時(shí)會(huì)得到相同的值。

  雖然遞增運(yùn)算value ++ 看上去是單操作,但是它包含了三個(gè)獨(dú)立的操作: 讀取Value、value + 1 、計(jì)算結(jié)果寫入Value。由于運(yùn)行,可能將多個(gè)線程之間的操作交替執(zhí)行,因此這兩個(gè)線程可能同事執(zhí)行讀取操作,從而使它們得到相同的值,并都將這個(gè)值加1。結(jié)果就是,在不同線程的調(diào)用中返回了相同的值。

  在Concurrence中說明的是一種常見的并發(fā)安全問題,稱為競態(tài)條件。當(dāng)某個(gè)計(jì)算的正確性取決于多個(gè)線程的交替執(zhí)行時(shí)序時(shí),那么就會(huì)發(fā)生競態(tài)條件。

timg (3).jpg

  Java并發(fā)性和多線程介紹

  在過去單CPU時(shí)代,單任務(wù)在一個(gè)時(shí)間點(diǎn)只能執(zhí)行單一程序。之后發(fā)展到多任務(wù)階段,計(jì)算機(jī)能在同一時(shí)間點(diǎn)并行執(zhí)行多任務(wù)或多進(jìn)程。雖然并不是真正意義上的“同一時(shí)間點(diǎn)”,而是多個(gè)任務(wù)或進(jìn)程共享一個(gè)CPU,并交由操作系統(tǒng)來完成多任務(wù)間對(duì)CPU的運(yùn)行切換,以使得每個(gè)任務(wù)都有機(jī)會(huì)獲得一定的時(shí)間片運(yùn)行。

  隨著多任務(wù)對(duì)軟件開發(fā)者帶來的新挑戰(zhàn),程序不在能假設(shè)獨(dú)占所有的CPU時(shí)間、所有的內(nèi)存和其他計(jì)算機(jī)資源。一個(gè)好的程序榜樣是在其不再使用這些資源時(shí)對(duì)其進(jìn)行釋放,以使得其他程序能有機(jī)會(huì)使用這些資源。

  再后來發(fā)展到多線程技術(shù),使得在一個(gè)程序內(nèi)部能擁有多個(gè)線程并行執(zhí)行。一個(gè)線程的執(zhí)行可以被認(rèn)為是一個(gè)CPU在執(zhí)行該程序。當(dāng)一個(gè)程序運(yùn)行在多線程下,就好像有多個(gè)CPU在同時(shí)執(zhí)行該程序。

  多線程比多任務(wù)更加有挑戰(zhàn)。多線程是在同一個(gè)程序內(nèi)部并行執(zhí)行,因此會(huì)對(duì)相同的內(nèi)存空間進(jìn)行并發(fā)讀寫操作。這可能是在單線程程序中從來不會(huì)遇到的問題。其中的一些錯(cuò)誤也未必會(huì)在單CPU機(jī)器上出現(xiàn),因?yàn)閮蓚€(gè)線程從來不會(huì)得到真正的并行執(zhí)行。然而,更現(xiàn)代的計(jì)算機(jī)伴隨著多核CPU的出現(xiàn),也就意味著不同的線程能被不同的CPU核得到真正意義的并行執(zhí)行。

  如果一個(gè)線程在讀一個(gè)內(nèi)存時(shí),另一個(gè)線程正向該內(nèi)存進(jìn)行寫操作,那進(jìn)行讀操作的那個(gè)線程將獲得什么結(jié)果呢?是寫操作之前舊的值?還是寫操作成功之后的新值?或是一半新一半舊的值?或者,如果是兩個(gè)線程同時(shí)寫同一個(gè)內(nèi)存,在操作完成后將會(huì)是什么結(jié)果呢?是第一個(gè)線程寫入的值?還是第二個(gè)線程寫入的值?還是兩個(gè)線程寫入的一個(gè)混合值?因此如沒有合適的預(yù)防措施,任何結(jié)果都是可能的。而且這種行為的發(fā)生甚至不能預(yù)測,所以結(jié)果也是不確定性的。

  以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)班給大家做的內(nèi)容詳解,更多關(guān)于java的學(xué)習(xí)內(nèi)容,請(qǐng)隨時(shí)關(guān)注動(dòng)力節(jié)點(diǎn)java學(xué)院官網(wǎng)。或咨詢?cè)诰€客服,有專業(yè)老師為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成人毛片18岁女人毛片免费看 | 亚洲欧美国产日产综合不卡 | 播放一级录像片 | 中文字幕曰韩一区二区不卡 | 999视频在线播放777 | 国产精品免费大片 | 奇米影视久久777中文字幕 | 九九精品视频一区在线 | 日本中文字幕不卡免费视频 | 日日干夜夜操视频 | 国产成人亚洲精品老王 | 日本 a | 欧美18videosex灌满 | 韩国精品欧美一区二区三区 | 久久精品国内一区二区三区 | 99亚洲 | 操一操干一干 | 欧美夜夜操 | 永久看日本大片免费 | 在线欧美日韩国产 | 色天使久久综合网天天 | 欧美国产永久免费看片 | 日韩欧美一区二区三区在线 | 中文字幕精品一区二区三区在线 | 精品少妇一区二区三区视频 | 88精品视频 | 最新福利在线 | 亚洲综合激情六月婷婷在线观看 | 亚洲一区二区在线成人 | 久久精品www | 久久―日本道色综合久久 | 97国产精品国产品国语字幕 | 中文一级国产特级毛片视频 | 黄色一级毛片在线观看 | 4hu四虎| 色情毛片 | 欧美激情日本一道免费视频 | 欧美黄色网址 | 欧美视频在线观在线看 | 又黄又爽又成人免费视频 | 精品亚洲欧美高清不卡高清 |