我想创建一个程序,其中整数列表使用多个线程进行排序,多个线程可以在多个步骤中读取并写入特定部分。每个线程都是同一对象的一个实例,并且与列表的同一部分上的其他线程一起工作。我的问题是每个线程无法看到其他线程对列表所做的更改,因此列表中的某些初始元素会丢失。有没有办法刷新或更新列表,以便线程能够拥有更改的列表?正在更新从多个线程共享的列表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