Java中同步與併發的運用
1.同步容器類包括兩部分:vector和hashtable
另一類是同步包裝類,由hronizedXXX創建。同步容器對容器的所有狀態進行串行訪問,從而實現線程安全。
它們存在如下問題:
a) 對於符合操作,需要額外的鎖保護。比如迭代,缺少則添加等條件運算。
b) toString,hashCode,equals都會間接的調用迭代,都需要注意併發。
5.0中的併發容器。
ConcurrentHashMap可以替代同步Map實現。
當主要為讀操作時,CopyOnWriteArrayList是List的'同步實現。
同時,增加了Queue和BlockingQueue:ConcurentLinkedQueue:FIFO隊列。
PriorityQueue:非併發的優先級順序隊列。
BlockingQueue則增加了可阻塞的插入和獲取。
a) ConcurentHashMap:不是使用一個公共鎖,而是分離鎖。任意數量的讀線程可以併發訪問map,讀者和寫者也可以併發訪問Map,並且有限數量的寫還可以併發修改Map。但是,size和isEmpty語言被弱化,是估算值。
b) CopyOnWriteArrayList:迭代器保留一個底層基礎數組引用,改引用不會修改。
hronizer
a) 閉鎖(CountDownLatch)。構造函數參數為n,通過countDown,n為0後,所有await的線程繼續執行。
b) FutureTask:計算由Callable實現,可以攜帶結果的Runnable。包括:等待,運行和完成。
c) Semaphore:控制能夠同時訪問的活動數量
d) CyclicBarrier:類似於閉鎖。閉鎖等待的是事件,關卡等待的是其他線程。初始n,Runnable r,n個線程都await(),當n個線程都執行完成後到達關卡時,r執行,關卡重置,n個線程繼續。
-
計算機二級Java備考習題及答案
練習可以幫助我們加深對知識的記憶和理解,下面是本站小編整理的2017計算機二級Java備考練習題及答案,歡迎學習!備考練習題一1、下列敍述中,錯誤的是______。A、Applet的默認佈局管理器是FlowLayoutB、JApplet中增加構件是加到JApplet的內容面板上,不是直接加到JApp...
-
2017上半年計算機二級Java練習題及答案
計算機等級證書是我們找工作的敲門磚,現在越來越多人重視計算機等級考試。下面是本站小編為大家帶來的2017上半年計算機二級Java練習題及答案,希望對大家的學習有幫助!一、單選題1、結構化程序設計主要強調的是______。A、程序的規模B、程序的易讀性C、程序的執...
-
講述java中enum的用法
本文實例講述了java中enum的用法。分享給大家供大家參考。具體分析如下:1.基本用法複製代碼代碼如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}枚舉是常量,所以應該用大寫。2.枚舉是對象枚舉隱含地繼承了,所以它具有的.屬性和方法。遍...
-
java中JVM虛擬機內存模型詳細説明
以下是本站小編為大家收集的java中JVM虛擬機內存模型詳細説明內容,歡迎閲讀學習!JVM的內部結構如下圖:java中JVM虛擬機內存模型詳細説明-天涯草-天涯草一個優秀Java程序員,必須瞭解Java內存模型、GC工作原理,以及如何優化GC的性能、與GC進行有限的交互,有一些應用程...