我希望能够在我的main方法中创建多个线程,让每个线程运行代码通过在每个线程上调用run()来生成某些对象,然后让每个线程在完成后将这些对象添加到共享的ArrayList . 所以现在我有 class Threader implements Runnable{
和我的 public class Processor
,它有我的 main
方法作为唯一的方法 . 我的 main
方法创建 i
线程,同时传入我想要的相关参数,然后在每个上调用 start()
. 在我的 Threader
类的 start()
方法中,我运行了一些我编写的代码,最后创建了一个自定义的 Document
对象 . 当线程成功创建了该对象时,我希望它能够将它添加到 <documents>
类型的 documents
ArrayList中 .
所以我假设我想让ArrayList同步,但我会在哪里实例化它,以便我也可以从我的 main
方法访问它?
2 回答
在
main
方法中创建同步List
然后您可以将其传递给main
方法创建的线程 . 使用类似List
之类的接口而不是像ArrayList
这样的具体类作为方法中的参数可以帮助您将Threader
解耦为具体类 .在
main
方法中,您可以创建ArrayList
然后使用Collections.synchronuzedList
将其转换为同步List
.使List成为Threader类中的静态字段,或者在main中实例化它并将其传递给每个线程 . 无论哪种方式,您可能想要考虑使用同步集合,或者您必须为add,get,ect实现自己的同步方法...