为了账号安全,请及时绑定邮箱和手机立即绑定

当我希望我的线程共享一个 ArrayList 时,我在哪里实例化 ArrayList

当我希望我的线程共享一个 ArrayList 时,我在哪里实例化 ArrayList

萧十郎 2022-03-10 10:34:25
我希望能够在我的 main 方法中创建多个线程,让每个线程运行代码以通过在每个线程上调用 run() 来生成某些对象,然后让每个线程在完成后将这些对象添加到共享的 ArrayList 中。所以现在我有 myclass Threader implements Runnable{和 my public class Processor,我的main方法是唯一的方法。我的main方法在传递我想要的相关参数时创建i线程,然后调用start()它们中的每一个。在start()我的类的方法中,我Threader运行了一些我编写的代码,最后创建了一个自定义Document对象。当线程成功创建该对象时,我希望它能够将其添加到documentsArrayList 类型<documents>。所以我假设我想让 ArrayList 同步,但是我会在哪里实例化它以便我也可以从我的main方法中访问它?
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

List在您的方法中创建一个同步的,main然后您可以将其传递给该main方法创建的线程。在方法中使用类似接口List而不是具体类ArrayList作为参数可以帮助您将其解耦Threader到具体类。

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


查看完整回答
反对 回复 2022-03-10
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-03-10
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信