Многопоточность и планирование JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Многопоточность и планирование Java

Сообщение Anonymous »

Скажите, пожалуйста, как лучше это сделать: у меня много объектов, около 200, которые обновляют свое состояние из сети раз в 20 секунд (аналогично обновляемой веб-странице). У каждого объекта есть несколько наблюдателей/подписчиков, и как только у объекта нет наблюдателей, он перестает обновляться и объект перестает существовать.
Я не придумал ничего типа запуска отдельного поток для каждого объекта, обновляя его в цикле и засыпая на 20 секунд. А затем, когда последний наблюдатель завершит работу, измените флаг прерывания и используйте его для завершения потока.
public class Controller implements Runnable {
...
public void run() {
log.info(Thread.currentThread().getName() + " start control: " + page.getUri().toString());
while (!Thread.currentThread().isInterrupted()) {
try {
notificationNewEvent(page.refreshEvents());
Thread.sleep(20000);
} catch (InterruptedException e) {
log.info("Thread is stop. ID:{}, Name: {}", page.getZip(), page.getTitle());
Thread.currentThread().interrupt();
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... uling-java

Вернуться в «JAVA»