当我希望我的线程共享一个 ArrayList 时,我应该在哪里实例化 ArrayList,以及如何从 main 方法访问它?

When I want my threads to share an ArrayList, where do I instantiate the ArrayList, and how do I access it from the main method?

我希望能够在我的 main 方法中创建多个线程,让每个线程 运行 代码通过在每个线程上调用 运行() 来生成某些对象,然后让每个线程完成后将这些对象添加到共享的 ArrayList。所以现在我有我的 class Threader implements Runnable{ 和我的 public class Processor,其中我的 main 方法是唯一的方法。我的 main 方法创建 i 个线程,同时传入我想要的相关参数,然后对每个线程调用 start()。在 Threader class 的 start() 方法中,我 运行 通过我编写的一些代码,以创建自定义 Document 对象结束。当线程成功创建该对象时,我希望它能够将它添加到 <documents>.

类型的 documents ArrayList 中

所以我假设我想让 ArrayList 同步,但是我应该在哪里实例化它以便我也可以从我的 main 方法访问它?

在您的 Threader 中将列表设为静态字段 class 或在 main 中实例化它并将其传递给每个线程。无论哪种方式,您可能都想考虑使用同步集合,或者您必须为添加、获取等实现自己的同步方法...

在您的 main 方法中创建一个同步的 List 然后您可以将它传递给由 main 方法创建的线程。使用像 List 这样的接口而不是像 ArrayList 这样的具体 class 作为方法中的参数可以帮助您将 Threader 解耦为具体的 class。

main方法中,可以创建一个ArrayList,然后使用Collections.synchronuzedList将其转换为同步的List