Collections.synchronizedList()の実装を正しく使用する方法がわかりません。Collections.synchronizedListとの連携を修正しました
私は、これら二つのき:
public synchronized static List<CurrencyBox> getOrderList() {
return Collections.synchronizedList(orderList);
}
と
public static List<CurrencyBox> getOrderList() {
return Collections.synchronizedList(orderList);
}
だから、私の知る限り理解されるように、synchronizedListは本当に正しい、オーダーリストではなくコピーを返しますか?
だから、上記の実装のどれが追加と削除のような原子操作を忠実にしたいのですか?
そしてJava9では何か変わることがありますか?それともまだ別の提案がありますか?
は、それはあなたがアトミック操作を保証与えないどちらを提供スニペットから、言うには少し難しい状況がなければ、あなた
'getOrderList()'を呼び出すときに、新しい同期リストを作成する理由はありますか?私はイニシャライザブロックでそのインスタンスを作成し(ソースリストと共に)、このメソッドでそのインスタンスを返します。そうすれば、その方法を同期させるかどうかは関係ありません。 – Tom
私は、 'orderList = Collections.synchronizedList(new ArrayList <>());'または 'setOrderList(List <> newList){orderList = Collections.synchronizedList(newList);}のように初期化子で期待しています。 } ' – daniu