問題タブ [copyonwritearraylist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - CopyOnWriteArrayList が期待どおりに機能しない
私は CopyOnWriteArrayList について学習していますが、私の理解では機能していません。私は 2 つのスレッドを持っています。1 つはメイン スレッドで、もう 1 つはめねじです。内部スレッドが 5 秒間スリープしている間に、メイン スレッドが CopyOnWriteArrayList コレクションからオブジェクトを削除しています。メインスレッドは、内部スレッドが反復するずっと前に削除操作を完了していますが、内部スレッドはまだ完全なコレクションを反復しています。つまり、メインスレッドによって削除されます。
メインスレッドによって削除されたオブジェクトを内部スレッドが反復すべきではないことを期待しています。私の理解が間違っている場合は修正してください。
java - CopyOnWriteArrayList#addIfAbsent のソースに関する質問、なぜ配列を再度取得する必要があるのか
私はJavaの並行パッケージを学んでいます。
CopyOnWriteArrayLis のソースを読んだ後、次の質問があります。
私の質問は、なぜオプティマイズが必要なのですか?
もちろん、私は自分自身をグーグルで検索しました.答えは常に、他のスレッドが新しい要素を追加した可能性があるときにそれを正しくすることです.
しかし、 lock.lock()を説明する方法は? 1 つのスレッドがロックを取得した場合、他のスレッドはどのように新しい要素を追加できますか?
ばかげた質問かもしれませんが、私はそれについて本当に混乱しています。