为了账号安全,请及时绑定邮箱和手机立即绑定

避免使用全局变量,同时允许访问另一个线程拥有的对象

避免使用全局变量,同时允许访问另一个线程拥有的对象

慕森卡 2023-02-23 14:40:02
我正在编写一个使用两个线程的 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);

  }

}


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号