【发布时间】:2016-01-24 19:35:07
【问题描述】:
我正在使用线程作为一个羽翼未丰的人。所以我需要一些帮助。
对于某些工作,我需要一个数组列表,该值将由所有线程共享。我想要这样的东西,main() 类将在线程创建时向线程提供数组列表。线程将向数组列表添加值,线程所做的更改将反映在该数组列表的每个副本中,重要的是,这必须以同步方式完成。
例如,main() 类给了两个线程数组列表。然后第一个线程在数组的插槽 1 上添加了一个值,第二个线程在添加时会看到更改,当它添加时,它将添加到第二个位置。当 main 将数组列表提供给一个新线程时,之前所做的所有这些更改都将很容易包含在内,并且将从第三个或更晚的位置开始添加。另一件事是,一次只能有一个线程进行更改,或者应该同步。
如何在 Java 中做到这一点?谁能帮帮我?
【问题讨论】:
-
将同一个 List 传递给所有线程,并确保每次访问都是同步的。或者更好的是,将列表封装在一个委托给列表的类中,并确保同步,并将该类的实例传递给所有线程。开始编码,如果您遇到具体问题,请返回您尝试过的内容。贴出具体问题的描述和代码。
-
请注意,需要确保在没有其他线程“中断”的情况下,单个线程可以完成以下操作: 1. 找到下一个空闲索引 2. 在该索引处设置一个值。同步是实现这一目标的一种方式。
-
我将列表封装在一个类中并将其传递给调用线程。有用。对于同步,我使用了对方法进行同步访问的 singelton 类。谢谢@JBNizet
-
为了正确同步,我使用了具有对方法的同步访问的 singelton 类。谢谢@DavidSoroko
标签: java arrays multithreading