簡體   English   中英

當我希望線程共享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方法中創建多個線程,讓每個線程運行代碼通過在每個線程上調用run()來生成某些對象,然后讓每個線程在完成后將這些對象添加到共享的ArrayList中。 因此,現在我有我的class Threader implements Runnable{和我的public class Processorpublic class Processor具有我的main方法作為唯一方法。 我的main方法在傳遞我想要的相關參數的同時創建了i線程,然后在每個線程上調用start() 在我的Threader類的start()方法中,我遍歷了我編寫的一些代碼,最后創建了一個自定義Document對象。 當線程成功創建該對象后,我希望它能夠將其添加到類型為<documents>documents ArrayList中。

所以我假設我想使ArrayList同步,但是我應該在哪里實例化它,以便也可以從我的main方法訪問它?

將List設為Threader類中的靜態字段,或在main中實例化它,並將其傳遞給每個線程。 您可能想要考慮使用同步集合的任何一種方式,或者必須實現自己的同步方法以進行添加,獲取等操作。

在您的main方法中創建一個同步List ,然后可以將其傳遞給main方法創建的線程。 使用類似的接口List ,而不是一個具體的類象ArrayList在你的方法參數可以幫助你的解耦Threader到具體的類。

main方法中,可以創建一個ArrayList ,然后使用Collections.synchronuzedList將其轉換為同步List

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM