這篇文章將為大家詳細(xì)講解有關(guān)Java編程思想中關(guān)于并發(fā)的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
10年積累的做網(wǎng)站、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有阜城免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
知識點摘抄
1、用并發(fā)解決的問題大體上可以分為“速度”和“設(shè)計可管理性”兩種。
2、并發(fā)通常是提高運行在單處理器上的程序的性能。
這聽起來有些違背直覺。如果你仔細(xì)考慮一下就會發(fā)現(xiàn),在單處理器上運行的并發(fā)程序開銷確實應(yīng)該比該程序的所有部分都順序執(zhí)行的開銷大,因為其中增加了所謂上下文切換的代價(從一個任務(wù)切換到另一個任務(wù))。
使這個問題變得有些不同的是阻塞。如果程序中的某個任務(wù)因為該線程控制之外的某些條件(通常是I/O)而導(dǎo)致不能繼續(xù)執(zhí)行,那么我們就說這個任務(wù)或線程阻塞了。如果沒有并發(fā),則整個程序都將停止下來,直至外部條件發(fā)生變化。但是如果使用并發(fā)來編寫
程序,那么當(dāng)一個任務(wù)阻塞時,程序中的其他任務(wù)還能繼續(xù)執(zhí)行,因此這個程序可以保持繼續(xù)向前執(zhí)行。事實上,從性能的角度看,如果沒有任務(wù)會阻塞,那么在單處理器機(jī)器上使用并發(fā)就沒有任何意義。
3、實現(xiàn)并發(fā)最直接的方式是在操作系統(tǒng)級別使用進(jìn)程。進(jìn)程是運行在它自己的地址空間內(nèi)的自包容的程序。
4、操作系統(tǒng)通常會將進(jìn)程互相隔離開,因此他們不會彼此干涉,這使得用進(jìn)程編程相對容易一些。與此相反的是,像Java所使用的這種并發(fā)系統(tǒng)會共享諸如內(nèi)存和I/O這樣的資源,因此編寫多線程程序最基本的困難在于在協(xié)調(diào)不同線程驅(qū)動的任務(wù)之間的對這些資
源的使用,以使得這些資源不會同時被多個任務(wù)訪問。
5、Java的線程機(jī)制是搶占式的,這表示調(diào)度機(jī)制會周期性的中斷線程,將上下文切換到另一個線程,從而為每個線程都提供時間片,使得每個線程都會分配到數(shù)量合理的的時間去驅(qū)動它的任務(wù)。
6、一個線程就是在進(jìn)程中的一個單一的順序控制流,因此,單個進(jìn)程可以擁有多個并發(fā)執(zhí)行的任務(wù)。
知識點擴(kuò)展
發(fā)布:一個對象是使它能夠被當(dāng)前范圍之外的代碼所引用:
常見形式:將對象的的引用存儲到公共靜態(tài)域;非私有方法中返回引用;發(fā)布內(nèi)部類實例,包含引用。
逃逸:在對象尚未準(zhǔn)備好時就將其發(fā)布。
不要讓this引用在構(gòu)造函數(shù)中逸出。例,在構(gòu)造函數(shù)中啟動線程,線程會包含對象的引用。
同步容器:對容器的所有狀態(tài)進(jìn)行穿行訪問,Vector、Hashtable,Cllections.synchronizedMap|List
并發(fā)容器:ConcurrentHashMap,CopyOnWriteArrayList,ConcurrentLinkedQueue、BlockingQueue
list 隨機(jī)訪問特性的優(yōu)勢。
Blocking 增加了可阻塞的get set操作
ConcurrentHashMap:分離鎖,為并發(fā)訪問帶來的高的吞吐量,同時幾乎沒有損失單個線程的訪問性能。返回弱一致性的迭代器。
迭代器的弱一致性,在迭代器生成以后會檢測容器的修改變化。
并發(fā)容器 size(), isEmpty() 弱化,返回近似結(jié)果。
CopyOnWriteArrayList:每次修改容器時復(fù)制,適用迭代需求大于修改需求情況。
生產(chǎn)者消費者模式,運用有界阻塞隊列解耦生產(chǎn)者和消費者的代碼。
Executor任務(wù)執(zhí)行框架,實現(xiàn)了生產(chǎn)者消費者模式。
SynchronousQueue:put等待消費者可用,take等待生產(chǎn)者可用,適用于消費者充足的情景。
關(guān)于“Java編程思想中關(guān)于并發(fā)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。