2017-02-27 8 views
0

1. ConcurrentLinkedQueueを使用する2つのスレッドがある場合、一方のスレッドがリストにデータを挿入し、他方のスレッドが同時にデータにアクセスします。誰でもConcurrentLinkedListの使用方法を例を使って説明できますか?

イベントシーケンスの例を以下に示します。

Eg1と

Puts1 
consume1 
Puts2  
consumes 
Puts3 
Consume3 

Eg2の

puts1 
puts2 
puts3 
consume1 
consume2 
consume3 

二つのスレッド間の操作を同期させることが2.Should?どうして?

答えて

0

ConcurrentLinkedListは "スレッドセーフ"です。つまり、クラスの任意のインスタンスは、別のスレッドからそのメソッドを呼び出すと、何も驚くことはありません。

それははあなたのプログラムはあなたが同時に同じリストオブジェクトを使用して複数のスレッドを持っているとき、あなたが期待するものでしょうことを意味するものではありませありません。

スレッドセーフは構成可能ではありません。すなわち、スレッドセーフなクラスから完全にプログラムを構築しても、プログラム自体はスレッドセーフではありません。プログラムは、さまざまなスレッドが互いに協調して相互に干渉しない場合にのみ、スレッドセーフです。

関連する問題