Java中的計數器CountDownLatch

2021-07-04 08:01:27 字數 1332 閱讀 6063

用給定的計數 初始化 countdownlatch。由於呼叫了 countdown() 方法,所以在當前計數到達零之前,await 方法會一直受阻塞。之後,會釋放所有等待的執行緒,await 的所有後續呼叫都將立即返回。這種現象只出現一次——計數無法被重置。

方法

意義void await()

使當前執行緒在鎖存器倒計數至零之前一直等待,除非執行緒被中斷。

boolean await(long timeout, timeunit unit)

使當前執行緒在鎖存器倒計數至零之前一直等待,除非執行緒被中斷或超出了指定的等待時間。

void countdown()

遞減鎖存器的計數,如果計數到達零,則釋放所有等待的執行緒。

long getcount()

返回當前計數。

string tostring()

返回標識此鎖存器及其狀態的字串。

重點是countdown(),執行之後,計數器減一,而await會一直等待,直到計數器為0,需要注意的是這個計數器不可以被重置。

應用:

測試atomicinteger和synchronized的效率問題

public

class

testatomicinteger

latch.await();//等待50個執行緒都執行完

system.out.println("sychronized style consume time:" + (system.nanotime()-start)/1000000.0);

latch = new countdownlatch(50);

start = system.nanotime();

for(int i = 0; i < 50 ; i ++)

latch.await();

system.out.println("cas style consume time:" + (system.nanotime()-start)/1000000.0);

}public

synchronized

static

intgetnextid()

public

static

intgetnextidwithatomic()

static class task implements runnable

public

void

run()else

}latch.countdown();//執行完乙個任務計數器減一}}

}

計數器 智慧型計數器簡介

計數器主要是應用於電子科技領域,計數器是一種運用得比較多的時序邏輯電路。計數器可以對數字進行運算,它是一種沒有辦法顯示計算結果的顯示器。隨著電子科技的不斷發展,現在的計數器也實現了智慧型功能。智慧型計數器的出現幫助我們實現了很多高強度生產問題 複雜的技術問題,並且節約了生產成本和人力成本。智慧型計數...

計數器 通用計數器的應用價值

隨著科學技術發展,一些應用系統,如大型通訊系統,電力系統,特別是高速運動目標的跟蹤定位系統,對時間間隔的測量精度提出了越來越高的要求,同時我國對時間間隔計數器的應用掌控性,更傾向於依賴於國產裝置實現數字式頻率計的研發。雖然通用計數器測量週期誤差不可能從根本上消除,但通過對轉換誤差 量化誤差及各類誤差...

計數器設計

最近看到一篇文章說要實現乙個計數器的功能,於是通過思索,設計了乙個靈活可用性高的物件計數器。裡面閃爍著 很多的火花。template class object counter object counter private static int m count template int object ...