91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎樣制作線程安全的計數器?

發布時間:2020-05-07 11:14:42 來源:億速云 閱讀:251 作者:Leah 欄目:編程語言

java怎樣制作線程安全的計數器?相信大部分人都不太了解,今天小編為了讓大家更加了解java怎樣制作線程安全的計數器,給大家總結了以下內容,一起往下看吧。

  • 線程安全的計數器實現原理簡介:
    在java中volatile關鍵字可以保證共享數據的可見性,它會把更新后的數據從工作內存刷新進共享內存,并使其他線程中工作內存中的數據失效,進而從主存中讀入最新值來保證共享數據的可見性,實現線程安全的計數器通過循環CAS操作來實現。就是先獲取一個舊期望值值,再比較獲取的值與主存中的值是否一致,一致的話就更新,不一致的話接著循環,直到成功為止.

  • 具體代碼實現

public class Count{
	private int count = 0;
	private AtomicInteger atomicI = new AtomicInteger(0);
	public static void main(String[] args){
		final Count cas = new Count();
		List<Thread> list = new ArrayList<Thread>();
		long start = System.currentTimeMillis();
		for(int j=0;j<100;j++){
			Thread t = new Thread(new Runnable(){
				@Override
				public void run(){
					for(int i=0;i<1000;i++){
						cas.count();
						cas.safeCount();
					}
				}
			});
			list.add(t);
		}
		//啟動線程
		for(Thread t:list){
		t.start();
		}
		//等待所有線程執行完畢
		for(Thread t:list){
			try{
				t.join();
				}catch(Exception e){
				e.printStackTrace();
				}
		}
		System.out.println("線程不安全:"+cas.count);
		System.out.println("線程安全:"+cas.atomicI.get());
		System.out.println("耗時:"+(System.currentTimeMillis() - start));
	}
	/**線程不安全的計數器*/
	public void count(){
		count++;
	}
	/**線程安全的計數器,循環CAS*/
	public void safeCount(){
		for(;;){
			int temp = atomicI.get();
			if(atomicI.compareAndSet(temp,++temp))
			  break;
		}
	}
}

執行結果:

java怎樣制作線程安全的計數器?

以上就是java如何實現線程安全的計數器的內容,有需要的朋友可以參考一下,望對大家有所幫助,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开平市| 郧西县| 乡城县| 余姚市| 恩平市| 武陟县| 凤山县| 陆良县| 泸水县| 湘乡市| 怀宁县| 洪洞县| 台中县| 河池市| 佳木斯市| 库尔勒市| 桑日县| 罗江县| 视频| 治县。| 都安| 龙南县| 循化| 唐海县| 怀集县| 江口县| 义乌市| 剑阁县| 长葛市| 招远市| 洪江市| 安陆市| 依安县| 杭锦后旗| 通河县| 望都县| 和平区| 邢台县| 阿勒泰市| 来安县| 日喀则市|