我正在編寫一個使用兩個線程的 Java 程序,一個用于不斷迭代小部件的 ArrayList 并更新它們的狀態,第二個是一個線程利用 swing 根據小部件的狀態為一系列塊設置動畫。我的問題是如何讓實現 Runnable 接口的 Painter 看到 WidgetManager 擁有的小部件的數組列表?此外,這種模式本身就存在缺陷嗎?我被教導要避免使用全局變量(例如在 main 中定義 WidgetList),但據我了解,沒有辦法將引用傳遞給 Runnable 線程,因為 run() 方法不需要依賴注入。main{ WidgetManager wm; Painter painter; painter.run(); wm.updateWidgets();}public class WidgetManager{ volatile ArrayList<Widget> widgets; void updateWidgets(){ while(true){ //do some stuff } }}public class Painter implements Runnable{ public void run(){ //paint some stuff }}
1 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
...該run()方法不需要 [arguments]
該run()方法由interface. implements您可以使用(注意,不是extends)接口的任何類的實例來創建您的線程。你的類可以有實例變量......
public class Painter implements Runnable{
private ArrayList<Widget> widgets;
public Painter(ArrayList<Widget> widgets) {
this.widgets = widgets;
}
public void run(){
paintSomeStuffBasedOnContentOf(widgets);
}
}
添加回答
舉報
0/150
提交
取消