レイのAtomicIntegerアトミックインクリメントタイプ

アトミック操作タイプのAtomicInteger:

 

プライベート静的整数NUM = 0; NUMに対して得られた結果19055 ++

 

プライベート静的揮発性の整数NUM = 0; NUMに対して得られた結果19550 ++

 

このとき、契約の下でJavaクラスのAtomicIntegerの導入と、その高い原子操作の同時実行の問題解決と:

パブリッククラスMyAtomicInteger { プライベート静的最終整数THREADCOUNT = 20。

プライベート静的ののAtomicIntegerカウント=新のAtomicInteger(0); プライベートの静的な無効増加(){ count.incrementAndGet(); }

パブリック静的無効メイン(文字列[] args){ スレッド[]スレッド=新しいスレッド[THREADCOUNT]。以下のために(INT iが= 0; I <THREADCOUNT; I ++){ スレッド[I] =新しいスレッド(() - > { ため(INT I1 = 0、I1 <1000; I1 ++){ 増加(); } })。スレッド[I] .start(); }

一方、(Thread.activeCount()> 1){

CPUは、他のスレッドを実行するので、//、現在のスレッドが権限のCPUを引き渡すということ利回り法の手段を呼び出します。これは、同じロックを解除しないであろう、睡眠方法と似ています。//しかし、収量は特定のCPU時間の制御を引き渡すことができない、加えて、この方法は、唯一のスレッドがCPUの実行時間を得るチャンスを同じ優先順位を持っているように得ることができます。//歩留まりメソッドを呼び出すと、ブロックされた状態にスレッドを作成しませんが、準備完了状態にスレッドバックを聞かせすることに注意してください、それが唯一のCPU実行時間を再取得するまで待機する必要があり、これがないのと同じ方法と睡眠ですThread.yield(); } System.out.println(にThread.currentThread()のgetName()。)のSystem.out.println( "NUM:" + COUNT); } }

結果:

メイン

A:40000

おすすめ

転載: www.cnblogs.com/tian-Bao555/p/12128433.html