Я пишу Java-программу, которая использует два потока, один из которых постоянно перебирает ArrayList виджетов и обновляет их состояния, второй - поток, использующий свинг для анимации серии блоков на основе состояния виджетов.
Мой вопрос: как я могу заставить Painter, который реализует интерфейс Runnable, видеть список виджетов, которым владеет WidgetManager?Кроме того, эта модель по своей сути неисправна?Меня учили избегать глобальной переменной (например, вместо определения WidgetList в main), но, насколько я понимаю, нет способа передать ссылку на поток 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
}
}