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