我想創建一個程序,其中整數列表使用多個線程進行排序,多個線程可以在多個步驟中讀取並寫入特定部分。每個線程都是同一對象的一個實例,並且與列表的同一部分上的其他線程一起工作。我的問題是每個線程無法看到其他線程對列表所做的更改,因此列表中的某些初始元素會丟失。有沒有辦法刷新或更新列表,以便線程能夠擁有更改的列表?正在更新從多個線程共享的列表int Java
回答
剛剛使用Java8 parallel Streams怎麼辦?
List<Integer> sortedList = theList.parallelStream()
.sorted()
.collect(Collectors.toList());
如果你想確保所有線程訪問相同的列表,使靜態的或共享變量。
如何使用,而不是列出一個Vector,Vector是線程安全的
如果多個線程同時訪問一個ArrayList那麼我們就必須在外部同步的代碼修改了該列表或者結構或簡單的修改了塊一個元素。結構修改意味着從列表中添加或刪除元素。設置現有元素的值不是結構修改。
Collections.synchronizedList通常在創建列表時使用,以避免意外的非同步訪問列表。
我使用的陣列,而不是ArrayList的。我試着讓列表成爲靜態的,但它並沒有改變任何東西,Vector也沒有我想要使用的方法。還有什麼我應該做的清單工作或一個具體的例子? – orestrag97
@ orestrag97在你的問題中,你明確指出你正在使用_「整數列表」_,現在你說_「我正在使用一個數組而不是ArrayList。」_ - 那它是什麼?數組或列表?並且請相應地更新您的問題以說清楚。 –
- 1. 共享列表上的多線程
- 2. 多線程訪問「共享」列表框
- 3. 共享列表線程
- 4. Java多線程程序:多線程中的對象共享
- 5. 線程排隊時沒有更新共享列表
- 6. 在多個線程之間共享一個對象java
- 7. 多線程共享變量
- 8. 更新從多個線程
- 9. 多線程共享變量
- 10. 多線程共享資源
- 11. 多線程 - 共享數據
- 12. 堆被共享到多個線程嗎?
- 13. java多線程ajax更新
- 14. 在Java線程之間共享數據
- 15. 更新列從多個表
- 16. EXEC替代觸發多個新的PHP線程共享主機
- 17. 跨多個進程的共享隊列
- 18. 多線程中的WebSphere共享連接
- 19. Java線程從共享堆棧陣列讀取和寫入
- 20. 從Java中的另一個線程訪問/共享對象
- 21. Java多線程 - 單個數組更新
- 22. 多個服務共享一個進程,多少個「主」線程?
- 23. 線程之間共享的列表:在引用共享列表的元素的特定線程中構建新列表?
- 24. 在java中的多線程共享數據
- 25. 在JAVA多線程中共享相同的數據區域?
- 26. F#同時在多個線程中更新列表
- 27. 更新而QListView從另一個線程(pyqt5)更新Python列表
- 28. 如何在一個表中更新基於共享ID列
- 29. Java:線程共享數據的框架
- 30. 阻止共享數據的Java線程?
https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html – shmosel