1
A
答えて
1
はい、完全に有効ですが、これを行うことでどのように達成できますか?また、スレッドは、オブジェクト参照を保持する変数ではなくオブジェクトインスタンスにゲインロックを設定しますしたがって、list
を他のインスタンスに再割り当てしても、現在のスレッドはすでに前のオブジェクトに対してロックを取得しています。
もっと具体的には、list
に値val1
が割り当てられているとします。 (彼らは参照list
上のインスタンスval1
ないでロックを待っているので)次にthread1
は(変数list
によって指される)val1
のロックをとり、現在、他のスレッドでもthread1
かかわらlist
を再インスタンス化したval1
のロックを取ることができません。
list
をブロック内に戻すのではなく、ブロックを消去しておく方がよいでしょう。
5
あなたは
synchronized (list)
を書くとき、ロックがオブジェクト、ない変数/フィールドlist
です。
あなたは
synchronized (list) {
list = new ArrayList<>();
}
を行う場合は、新しいオブジェクトを作成し、変数/フィールドを再割り当てしている - しかし、あなたがロックを変更していない - ロックはまだそれが前にいた同じオブジェクトです。
関連する問題
- 1. Java:ネストされた同期ブロック
- 2. 同期ブロックandroid
- 3. 非同期ブロック
- 4. pthread_mutex_t VS @同期ブロック?
- 5. スレッドセーフな同期ブロック
- 6. 同期ブロックとdispatch_async
- 7. 同期メソッドとJavaの同期ブロックの違いは何ですか?
- 8. ブロック内のブロックの同期化?
- 9. Java静的初期化ブロック
- 10. java同期ブロック - メソッド全体をロックする
- 11. java - 同期ブロック内での並べ替え
- 12. dispatch_asyncブロックで同期NSURLConnectionをラップすると非同期接続
- 13. Java同期オブジェクト?
- 14. JAVA同期
- 15. 同期ブロックを再入力するコスト
- 16. 非同期ブロックの推奨デザインパターン?
- 17. 同期されたブロックとモニタオブジェクト
- 18. メール同期Javaで
- 19. Javaのスレッド/同期
- 20. Java同期質問
- 21. モデルのJava同期
- 22. 同期ブロック内の予期しないコード
- 23. これは問題ありませんか? (スレッド)同期化、スレッド=同期ブロック
- 24. C#ASP.NETでは、Javaの同期ブロックの等価要素は何ですか?
- 25. Javaの同期ブロックで使用されるロックにアクセスできますか?
- 26. Java用スレッドの同期
- 27. Javaの同期問題
- 28. 学習Java、同期キーワード
- 29. Javaのメソッドの同期
- 30. Javaでの非同期ノンブロッキングリモートロギング?
このリストを別のリストで更新したいと思います。このリストをクリアして、すべてを追加する方が良いでしょうか?このリストには他のスレッドが反復しています。 –
@AkashMahajanはい、理想的にはアプローチでなければなりません。 –