色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

Java 并發(fā)編程簡(jiǎn)介

時(shí)間:2023-05-17

簡(jiǎn)介:
操作系統(tǒng)的呈現(xiàn)使得計(jì)算機(jī)每次能運(yùn)轉(zhuǎn)多個(gè)程序,并且不同的程序都在單獨(dú)的進(jìn)程中運(yùn)轉(zhuǎn):操作系統(tǒng)為各個(gè)獨(dú)立執(zhí)行的進(jìn)程分配好資源,包括內(nèi)存,文件句柄以及平安證書等,在不同的進(jìn)程之間能夠經(jīng)過(guò)一些粗粒度的通訊機(jī)制來(lái)交流數(shù)據(jù),包括:套接字、信號(hào)處置器、共享內(nèi)存、信號(hào)量以及文件等;一種高效的運(yùn)轉(zhuǎn)方式是經(jīng)過(guò)粗粒度的時(shí)間分片(TimeSlicing)使這些用戶和程序能共享計(jì)算機(jī)資源,而不是由一個(gè)程序從頭到尾運(yùn)轉(zhuǎn),在計(jì)算多個(gè)任務(wù)時(shí),每個(gè)程序執(zhí)行一個(gè)任務(wù)并在必要時(shí)互相通訊。
線程被稱為輕量級(jí)進(jìn)程,在大多數(shù)現(xiàn)代操作系統(tǒng)中,以線程為根本的調(diào)度單位,而不是進(jìn)程,若沒(méi)有明白的協(xié)同機(jī)制,那么線程將被彼此獨(dú)立執(zhí)行。線程會(huì)共享進(jìn)程范圍內(nèi)的資源,例如內(nèi)存句柄和文件句柄,但每個(gè)線程都有各自的程序計(jì)數(shù)器、棧以及部分變量等。由于同一個(gè)進(jìn)程中的一切線程都將共享進(jìn)程內(nèi)存地址空間,因而這些線程都能訪問(wèn)系統(tǒng)的變量并在同一個(gè)堆上分配對(duì)象,這就需求完成一種比在進(jìn)程間共享數(shù)據(jù)力度更細(xì)的數(shù)據(jù)共享機(jī)制,假如沒(méi)有明白的同步機(jī)制來(lái)協(xié)同對(duì)共享數(shù)據(jù)的訪問(wèn),那么當(dāng)一個(gè)線程正在運(yùn)用某個(gè)變量時(shí),另一個(gè)線程可能同時(shí)訪問(wèn)這個(gè)變量,將形成不可預(yù)測(cè)的結(jié)果。Java 并發(fā)編程簡(jiǎn)介
優(yōu)勢(shì):
效勞器應(yīng)用程序在承受來(lái)自多個(gè)遠(yuǎn)程客戶端的套接字銜接懇求時(shí),若為每個(gè)銜接都分配其各自的線程并且運(yùn)用同步I/O,會(huì)降低此類程序的開(kāi)發(fā)難度。
若某個(gè)應(yīng)用程序?qū)μ捉幼謭?zhí)行讀操作而此時(shí)還沒(méi)有數(shù)據(jù)到來(lái),那么將不斷阻塞,直到有數(shù)據(jù)到來(lái)。在單線程應(yīng)用程序中,不只意味著在處置懇求的過(guò)程中將停頓,而且還意味著在這個(gè)線程被阻塞期間,對(duì)一切懇求的處置都將停頓,為防止此,單線程效勞器應(yīng)用程序必需運(yùn)用非阻塞I/O,而其復(fù)雜性要遠(yuǎn)遠(yuǎn)高于同步I/O,并且容易出錯(cuò)。但是,若每個(gè)懇求都有本人的處置線程,那么在處置某個(gè)懇求時(shí)發(fā)作的阻塞將不會(huì)影響其他懇求的處置。
風(fēng)險(xiǎn):
1、平安性問(wèn)題:
由于多個(gè)線程要共享相同的內(nèi)存地址空間,并且是并發(fā)運(yùn)轉(zhuǎn),因而它們可能會(huì)訪問(wèn)或修正其他線程正在運(yùn)用的變量,招致結(jié)果是沒(méi)有同步狀況下,線程會(huì)由于無(wú)法意料的數(shù)據(jù)變化而發(fā)作錯(cuò)誤。
假如沒(méi)有同步,無(wú)論是編譯器、硬件還是運(yùn)轉(zhuǎn)時(shí),都能夠隨意布置操作的執(zhí)行時(shí)間和次第,例如對(duì)存放器或者處置器中的變量停止緩存,而這些被緩存的變量關(guān)于其他線程來(lái)說(shuō)是暫時(shí)(永世)不可見(jiàn)的。
@NotThreadSafe
publicclassUnsafeSequence{
privateintvalue;
publicintgetNext(){
returnvalue++;
}
}
事實(shí)上value++包含三個(gè)獨(dú)立的操作:讀取value,value+1,將計(jì)算結(jié)果寫入value;
由于運(yùn)轉(zhuǎn)時(shí)多個(gè)線程之間的操作交替執(zhí)行,因而可能同時(shí)執(zhí)行讀操作,從而得到相同值并將其加1,結(jié)果是,在不同線程的調(diào)用中返回相同的數(shù)值。
2、活潑性問(wèn)題:
活潑性意味著某件正確的事情最終會(huì)發(fā)作,在串行程序中,即無(wú)限循環(huán),從而使循環(huán)之后的代碼無(wú)法得到執(zhí)行,例如線程A在等候線程B釋放其持有的資源,而線程B永遠(yuǎn)都不釋放該資源,那么A就會(huì)永世地等候。
3、性能問(wèn)題:
場(chǎng)景:在多線程程序中,當(dāng)線程調(diào)度器暫時(shí)掛起活潑線程并轉(zhuǎn)而運(yùn)轉(zhuǎn)另一個(gè)線程時(shí),會(huì)頻繁地呈現(xiàn)上下文切換操作,這種操作將帶來(lái)極大的開(kāi)支:保管和恢復(fù)執(zhí)行上下文,喪失部分性,并且CPU時(shí)間將更多地花在線程調(diào)度而不是線程運(yùn)轉(zhuǎn)上;當(dāng)線程共享數(shù)據(jù)時(shí),必需運(yùn)用同步機(jī)制,而這些機(jī)制常常會(huì)抑止某些編譯器優(yōu)化,使內(nèi)存緩存區(qū)中的數(shù)據(jù)無(wú)效,以及增加共享內(nèi)存總線的同步流量,都將帶來(lái)額外性能開(kāi)支。
場(chǎng)景解析:
當(dāng)JVM啟動(dòng)時(shí),將為JVM的內(nèi)部任務(wù)(例,渣滓回收,終結(jié)操作等)創(chuàng)立后臺(tái)線程,并創(chuàng)立一個(gè)主線程來(lái)運(yùn)轉(zhuǎn)main辦法。
AWT和Swing:AWT和Swing的用戶界面框架創(chuàng)立線程來(lái)管理用戶界面事情。當(dāng)用戶動(dòng)身某個(gè)UI動(dòng)作時(shí),在事情線程中就會(huì)有一個(gè)事情處置器被調(diào)用以執(zhí)行用戶懇求的操作,假如事情處置器需求訪問(wèn)由其他線程同時(shí)訪問(wèn)的應(yīng)用程序狀態(tài)(例如編輯某個(gè)文檔),那么該事情處置器,以及訪問(wèn)這個(gè)狀態(tài)的一切其他代碼都必需采用一種線程平安方式來(lái)訪問(wèn)該狀態(tài)。
Timer:Timer將創(chuàng)立線程來(lái)執(zhí)行延遲任務(wù)。TimerTask將在Timer管理的線程中執(zhí)行,若Task訪問(wèn)了其他線程訪問(wèn)的數(shù)據(jù),那么Task需求以線程平安的方式來(lái)訪問(wèn)數(shù)據(jù),其他類也必需采用線程平安的方式來(lái)訪問(wèn)該數(shù)據(jù),完成該目的的最簡(jiǎn)雙方式是將線程平安封裝在共享對(duì)象內(nèi)部確保Task訪問(wèn)的對(duì)象自身是線程平安。
Servlet和JavaServerPage:抵達(dá)效勞器的懇求會(huì)經(jīng)過(guò)一個(gè)過(guò)濾器鏈被分發(fā)到正確的Servlet或JSP,當(dāng)多個(gè)客戶端同時(shí)懇求同一個(gè)Servlet效勞時(shí)或者Servlet被多個(gè)線程同時(shí)調(diào)用,則必需確保線程平安;即便確保只要一個(gè)線程調(diào)用某個(gè)Servlet,該Servlet可能會(huì)訪問(wèn)與其他多個(gè)Servlet共享的信息,例如保管在ServletContext中或者會(huì)話HttpSession中的對(duì)象,也必需正確協(xié)同對(duì)這些對(duì)象的訪問(wèn)完成線程平安。
遠(yuǎn)程辦法調(diào)用(RMI,RMI可以調(diào)用在其他JVM中運(yùn)轉(zhuǎn)的對(duì)象):當(dāng)調(diào)用遠(yuǎn)程對(duì)象時(shí),將在一個(gè)由RMI管理的線程中調(diào)用該對(duì)象,同一個(gè)遠(yuǎn)程對(duì)象上的同一個(gè)遠(yuǎn)程辦法會(huì)在多個(gè)RMI線程中被同時(shí)調(diào)用,因而必需正確協(xié)同在多個(gè)對(duì)象中共享的狀態(tài),以及對(duì)遠(yuǎn)程對(duì)象自身狀態(tài)的訪問(wèn)(由于同一個(gè)對(duì)象可能會(huì)在多個(gè)線程中被同時(shí)訪問(wèn)),必需確保其本身的線程平安性。

文章標(biāo)簽:

Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)

與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
ciya68