Java並發包最佳實踐是什麼?

時間 2021-06-07 03:32:49

1樓:clerk

要啥並發包,要啥自行車,fork join map reduce 非同步框架等一大堆,我覺得普通開發者直接使用並發包的場景不多

2樓:toruneko

我想要在併發環境下測試乙個balancer,如果不用barrier,我可能得不到相對公平的競爭,甚至原本需要競爭的執行緒,是按照順序執行的。

另外我需要對name1,name2,name3,name4出現次數進行統計,我不能用乙個Integer,因為他不是原子的。所以我使用AtomicInteger來完成統計。

最後我需要等待100個執行緒全部執行完畢之後,再來斷言結果的正確與否。所以這裡需要latch協助。

ConcurrentMap

,AtomicInteger

>map=

newConcurrentHashMap

<>();

map.

put(

"name1"

,new

AtomicInteger(0

));map

.put

("name2"

,new

AtomicInteger(0

));map

.put

("name3"

,new

AtomicInteger(0

));map

.put

("name4"

,new

AtomicInteger(0

));CyclicBarrier

barrier

=new

CyclicBarrier

(100

);CountDownLatch

latch

=new

CountDownLatch

(100

);for

(inti=

0;i<100;

i++)

catch

(Exceptione)

varconfig

=balancer

.getNext

();map

.get

(config

.getName

()).

incrementAndGet

();latch

.countDown

();}).

start

();}

trycatch

(InterruptedExceptione)

Assert

.assertEquals(20

,map

.get

("name1"

).get

());

Assert

.assertEquals(30

,map

.get

("name2"

).get

());

Assert

.assertEquals(40

,map

.get

("name3"

).get

());

Assert

.assertEquals(10

,map

.get

("name4"

).get

());

以上使用了併發容器、Latch、Barrier、原子類。balancer內部還使用了synchronized同步。

該用的時候,自然就用上了。

Intel 推出 DPDK 開發包的意義是什麼?

核桃君 最近在看英特爾寫的一本書 linux開源儲存全棧詳解 從ceph到容器儲存 其中第四章就提到了這些,而SPDK技術就是要基於DPDK來實現的,還有配合NVMe SSD來實現,一整套裝置和軟體,印象中位元組那邊招的儲存工程師崗位提到了這個需求,應該是使用到了。最後上圖吧 樓上技術層面分析已經很...

JAVA常量是什麼意思?

路過 常量是指在程式的整個執行過程中值保持不變的量。在這裡要注意常量和常量值是不同的概念,常量值是常量的具體和直觀的表現形式,常量是形式化的表現。通常在程式中既可以直接使用常量值,也可以使用常量 蛙課網 常量就是值不會變的變數,如業務中的某些固定的值,可以使用常量來表示。例如 public stat...

綁匪的最佳策略是什麼?

這種問題,如果答的好,反而會被討厭麼?我一開始想著,既然中國警察從來不和綁匪談條件,那麼一開始就已經限定了綁匪的行動就是要麼投降要麼死。但是轉念一想,綁匪既然已經控制了人質,而且人質又如題主所說,不會反抗,那麼綁匪的最佳策略應當是將槍口對準警察。畢竟只有乙個警察。這時,警察拿槍對著綁匪,可是綁匪也拿...