我希望能夠在我的 main 方法中創(chuàng)建多個線程,讓每個線程運(yùn)行代碼以通過在每個線程上調(diào)用 run() 來生成某些對象,然后讓每個線程在完成后將這些對象添加到共享的 ArrayList 中。所以現(xiàn)在我有 myclass Threader implements Runnable{和 my public class Processor,我的main方法是唯一的方法。我的main方法在傳遞我想要的相關(guān)參數(shù)時創(chuàng)建i線程,然后調(diào)用start()它們中的每一個。在start()我的類的方法中,我Threader運(yùn)行了一些我編寫的代碼,最后創(chuàng)建了一個自定義Document對象。當(dāng)線程成功創(chuàng)建該對象時,我希望它能夠?qū)⑵涮砑拥絛ocumentsArrayList 類型<documents>。所以我假設(shè)我想讓 ArrayList 同步,但是我會在哪里實(shí)例化它以便我也可以從我的main方法中訪問它?
2 回答

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
List
在您的方法中創(chuàng)建一個同步的,main
然后您可以將其傳遞給該main
方法創(chuàng)建的線程。在方法中使用類似接口List
而不是具體類ArrayList
作為參數(shù)可以幫助您將其解耦Threader
到具體類。
在該main
方法中,您可以創(chuàng)建一個ArrayList
然后使用Collections.synchronuzedList
將其轉(zhuǎn)換為同步的List
。

慕的地6264312
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個贊
使 List 成為 Threader 類中的靜態(tài)字段,或在 main 中實(shí)例化它并將其傳遞給每個線程。無論哪種方式,您可能都想考慮使用同步集合,或者您必須實(shí)現(xiàn)自己的同步方法來添加、獲取等......
添加回答
舉報
0/150
提交
取消