本文目錄一覽:
- 1、Java使用expectit亂碼
- 2、java防止並發的幾種方法
- 3、新課標英語中有許多相像的單詞 例如:expect和except,請各位高手麻煩給我歸納一下,最好要多一點完整一點
- 4、北大青鳥java培訓:Java並發編程常用的類和集合?
- 5、java中這個expect是個什麼?在think in java中看到的。 為什麼在()內也用new 加一個字符串數組?
Java使用expectit亂碼
整new String[]{…}作參數傳入monitor象expect
expect作者自寫java自帶
think in java第現monitor.expect作者提
java防止並發的幾種方法
使用synchronized關鍵字3種使用方法:
修飾類方法,作用於當前實例加鎖,進入方法要獲取當前實例的鎖
修飾靜態方法,作用於當前實例加鎖,進入方法要獲取當前實例的鎖
修飾代碼塊,指定加鎖對象,給指定對象加鎖,進入代碼塊要先獲取指定對象的鎖(synchronized參數要傳入固定的對象才能起到作用)
使用原子操作:
java 在 SDK atomic包下的提供了原子操作的類,常用的有
AtomicBoolean
AtomicInteger
AtomicIntegerArray
AtomicIntegerFieldUpdater
AtomicLong
AtomicLongArray
AtomicLongfieldUpdater
AtomicMarkableReference
AtomicReference
AtomicReference
AtomicReferenceArray
AtomicReferenceFieldUpdater
AtomicStampedReference
DoubleAccumulator
DoubleAdder
LongAccumulator
LongAdder
Striped64
其中atomicboolean atomicinteger atomicreperence常用的方法及含義
get() 獲取當前值
set()設置當前值
getAndSet(V newValue) 獲取當前值並設置最新的值
compareAndSer(V expect,V update)如果expect與當前值相同就設置update為最新值
新課標英語中有許多相像的單詞 例如:expect和except,請各位高手麻煩給我歸納一下,最好要多一點完整一點
1、assume(假設)——presume(假設,姑且認為)——consume(消費)——resume(恢復,繼續,重新開始)
2、insist(堅持)——persist(堅持,頂住)——consist(由…組成)——resist(阻止,抵抗)
3、permit(允許,許可)——admit(承認)——submit(交出,屈服)——commit(犯…錯誤,對…作出承諾)
4、proceed(進行)——precede(在…之前)——succeed(成功,繼承,接着發生)——exceed(超過)
5、staff(人員)——stuff(填塞)——stiff(僵硬的)——shift(提升,轉移)
6、relieve(解脫,減輕)——believe(相信)——achieve(達到)——survive(倖存)——release(釋放)
7、compose(組成,創作)——oppose(反對)——impose(強加於,收稅)——expose(揭露,使曝光)
8、remind(提醒)——remember(記住)——remain(依舊,依然)——recall(回想)
9、attribute(屬性)——contribute(奉獻)——distribute(分配)——tribute(禮物)
10、respective(各自的,分別的)——respectable(可尊敬的)——respectful(尊敬的)——respecting(鑒於,關於)
11、subject(課題)——object(目標,對象)——inject(打針)——reject(拋棄,拒絕)
12、design(設計)——assign(指定,任命)——resign(辭職)——sign(符號)——designate(指定,指派)
13、reform(改革)——inform(通知)——transform(轉換)——perform(執行)
14、tap(開發)——top(最高點)——tip(尖頭,小費)——trap(陷阱)
15、enquire(諮詢)——inquire(打聽,詢問)——acquire(獲得)——require(要求)
16、apply(應用)——supply(供應)——reply(回答)——imply(暗示)
17、inspect(檢查)——expect(希望,期待)——respect(尊重)——suspect(懷疑)
18、prefer(更喜歡,寧願)——infer(推斷)——refer(參考,提到)——offer(提供)
19、produce(生產)——reduce(減少)——reproduce(再生產,複製)——introduce(介紹)
20、preserve(保留,保養)——conserve(保存,保守)——reserve(保留)——deserve(值得)
21、include(包括)——conclude(做結論)——exclude(排除)
22、conceive(設想)——perceive(感知)——receive(收到)——deceive(欺騙)
23、imaginative(富有想象力的)——imaginable(可以想象的)——imaginary(想象的,虛構的)——imagination(想象力)
24、favorite(喜愛的)——favorable(有利的)——favorably(順利的,好意的)——favour(偏愛,讚賞)
25、clash(衝突,撞擊)——crush(壓碎)——crash(墜毀,粉碎)——smash(粉碎,打碎)
26、economical(節約的)——economic(經濟的)——economy(經濟)——economics(經濟學)
27、release(釋放)——relieve(減輕)——relate(把…聯繫起來)——retain(保存)
28、intent(意圖)——intention(意圖)——intensity(強度)——intentional(有意的,故意的)
29、slip(滑,溜)——slipper(拖鞋)——slippery(光滑的)——slap(猛的關門,打…一巴掌)——snap(突然折斷,拍快照)——slope(斜坡,坡度)
30、alive(活着)——live(帶電的,活的)——living(活着的,現存的)——lively(活潑的,有生氣的)
31、alone(單獨的)——lonely(孤獨的)——single(單個的,單身的)——loneliness(孤獨的,寂寞的)
32、lay(把…放到;lie的過去式)——lie(說謊)——lain(lie的過去分詞)——laid(lay的過去分詞)——lying(lie的現在分詞)
33、pleasure(興趣,高興)——treasure(寶貝)——leisure(閑暇)——measure(測量,度量,措施)
34、fine(精細的,罰金)——refine(精鍊)——define(定義)——confine(局限於)
35、lose(失去)——loose(松的)——loss(損失)——lost(失去;lose的過去分詞)
36、aboard(在船上)——abroad(在國外)——board(船板)——on board(在船上,在機上)——broad(寬廣的)——broaden(使加寬,拓寬)
37、convict(證明有罪)——convey(傳達)——convert(把…轉換成)——convince(使信服)
38、conclude(做結論)——concede(讓步)——exclude(把..排除在外)——conduct(傳導,行為)——concrete(具體的)
39、deprive(剝奪)——despise(瞧不起)——divert(轉移,把…引開)——deceive(欺騙)
40、effect(影響)——affect(影響)——infect(使感染)——defect(缺點,過失)
41、heap(堆放)——head(頭)——heal(治好)——heave(舉起)
42、immediate(馬上)——intimate(親昵的)——imitate(模範)——initiate(發起,初始)
43、outlet(出口)——outcome(結局)——ouput(產量,輸出)——outlook(外觀)
44、wear(穿着)——bear(忍受,攜帶,生育)——tear(撕碎,眼淚)——gear(齒輪)——pear(梨)
45、amuse(使開心)——abuse(濫用)——accuse(控告)——excuse(諒解,借口)
46、arrange(安排)——appoint(任命,約定)——apply(應用)——appeal(呼籲)
47、prescribe(處方)——describe(描寫)——subscribe(定購,訂閱)——ascribe(歸屬於)
48、strip(剝奪,一條)——trip(短途旅行)——strap(皮帶,吊環)——steep(陡峭的)
49、shelter(保護,避難)——shatter(使粉碎,使破滅)——shepherd(牧羊人)——shift(變換)——sheer(純粹的,完全的)
50、except(除了)——excerpt(摘引,選段)——expect(期待)——exception(除外)——exceptional(特別的,特殊的)
北大青鳥java培訓:Java並發編程常用的類和集合?
AtomicInteger可以用原子方式更新int值。
類AtomicBoolean、AtomicInteger、AtomicLong和AtomicReference的實例各自提供對相應類型單個變量的訪問和更新。
java課程培訓機構認為基本的原理都是使用CAS操作:booleancompareAndSet(expectedValue,updateValue);如果此方法(在不同的類間參數類型也不同)當前保持expectedValue,則以原子方式將變量設置為updateValue,並在成功時報告true。
循環CAS,參考AtomicInteger中的實現:publicfinalintgetAndIncrement(){ for(;;){ intcurrent=get(); intnext=current+1; if(compareAndSet(current,next)) returncurrent; } } publicfinalbooleancompareAndSet(intexpect,intupdate){ returnunsafe.compareAndSwapInt(this,valueOffset,expect,update); }ABA問題因為CAS需要在操作值的時候檢查下值有沒有發生變化,如果沒有發生變化則更新,但是如果一個值原來是A,變成了B,又變成了A,那麼使用CAS進行檢查時會發現它的值沒有發生變化,但是實際上卻變化了。
ABA問題的解決思路就是使用版本號。
在變量前面追加上版本號,每次變量更新的時候把版本號加一,那麼A-B-A就會變成1A-2B-3A。
從Java1.5開始JDK的atomic包里提供了一個類AtomicStampedReference來解決ABA問題。
這個類的compareAndSet方法作用是首先檢查當前引用是否等於預期引用,並且當前標誌是否等於預期標誌,如果全部相等,則以原子方式將該引用和該標誌的值設置為給定的更新值。
ArrayBlockingQueue一個由數組支持的有界阻塞隊列。
此隊列按FIFO(先進先出)原則對元素進行排序。
隊列的頭部是在隊列中存在時間最長的元素。
隊列的尾部是在隊列中存在時間最短的元素。
新元素插入到隊列的尾部,隊列獲取操作則是從隊列頭部開始獲得元素。
這是一個典型的“有界緩存區”,固定大小的數組在其中保持生產者插入的元素和使用者提取的元素。
一旦創建了這樣的緩存區,就不能再增加其容量。
試圖向已滿隊列中放入元素會導致操作受阻塞;試圖從空隊列中提取元素將導致類似阻塞。
此類支持對等待的生產者線程和使用者線程進行排序的可選公平策略。
默認情況下,不保證是這種排序。
然而,通過將公平性(fairness)設置為true而構造的隊列允許按照FIFO順序訪問線程。
公平性通常會降低吞吐量,但也減少了可變性和避免了“不平衡性”。
LinkedBlockingQueue一個基於已鏈接節點的、範圍任意的blockingqueue。
此隊列按FIFO(先進先出)排序元素。
隊列的頭部是在隊列中時間最長的元素。
隊列的尾部是在隊列中時間最短的元素。
新元素插入到隊列的尾部,並且隊列獲取操作會獲得位於隊列頭部的元素。
鏈接隊列的吞吐量通常要高於基於數組的隊列,但是在大多數並發應用程序中,其可預知的性能要低。
可選的容量範圍構造方法參數作為防止隊列過度擴展的一種方法。
如果未指定容量,則它等於Integer.MAX_VALUE。
除非插入節點會使隊列超出容量,否則每次插入後會動態地創建鏈接節點。
如果構造一個LinkedBlockingQueue對象,而沒有指定其容量大小,LinkedBlockingQueue會默認一個類似無限大小的容量(Integer.MAX_VALUE),這樣的話,如果生產者的速度一旦大於消費者的速度,也許還沒有等到隊列滿阻塞產生,系統內存就有可能已被消耗殆盡了。
java中這個expect是個什麼?在think in java中看到的。 為什麼在()內也用new 加一個字符串數組?
觀察其他代碼monitor是屬於哪個對象的
expect只不過是個方法名而已
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193124.html