首页 文章

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

提问于
浏览
0

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

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

2 回答

  • 1

    main 方法中创建同步 List 然后您可以将其传递给 main 方法创建的线程 . 使用类似 List 之类的接口而不是像 ArrayList 这样的具体类作为方法中的参数可以帮助您将 Threader 解耦为具体类 .

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

  • 1

    使List成为Threader类中的静态字段,或者在main中实例化它并将其传递给每个线程 . 无论哪种方式,您可能想要考虑使用同步集合,或者您必须为add,get,ect实现自己的同步方法...

相关问题