Так что это мой код, который запрашивает изменение в модели моего приложения.
Thread refreshThread = new Thread(new Runnable() {
public void run() {
while(true)
{
if(TasksManager.isDirty())
{
TasksManager.refreshTasks(true);
panel.repaint();
}
}
}
});
refreshThread.start();
Сейчас это огромная загрузка процессора.Вот разбивка того, что происходит.
- TaskManager понимает, что было добавлено что-то новое.
- TaskManager помечает себя как грязный.
- Когда мои потоки обновлений обнаруживают, что он грязный, он немедленно выполняет обновлениена модели и панели дисплея.
- В конце RefreshTasks () модель снова помечается как чистая.
Я не хотел, чтобы TaskManager запускал обновлениепоскольку он не содержит ссылок на панель просмотра.
Одна из идей, которые у меня есть, - это использовать условие .await ().TaskManager может сигнализировать о состоянии, когда оно было помечено как грязное.Но я вижу, что Замки и Условия идут рука об руку.Можно ли использовать Условие, не получая Блокировку в начале функции?