У меня есть Swing GUI, который должен периодически читать rss-канал (фид предоставляется приложением, которое я написал). Я реализовал это в SwingWorker и хочу спросить, является ли это звуковой дизайн.Спуск SwingWorker нить сна
Вот код, который я написал для фона метод:
@Override
protected Void doInBackground() throws Exception {
comboBoxModel.removeAllElements();
while(true) {
Channel feedChannel = webResource.path(role.role())
.accept(MyMediaType.APPLICATION_RSS)
.get(Rss.class).getChannel();
List<Item> itemList = feedChannel.getEntryList();
for(Item item : itemList) {
String itemLink = item.getLink();
if(!feedItemMap.containsKey(itemLink)) {
comboBoxModel.addElement(new Pair<>(itemLink, true));
feedItemMap.put(itemLink, true);
}
}
Thread.sleep(10000);
}
}
Моя идея позволяя спать нить уменьшить количество GETs. Моя программа не должна обновляться каждые миллисекунды, поэтому для снижения нагрузки на сервер я думал, что это будет хорошей идеей.
После прочтения этого вопроса (java - thread.sleep() within SwingWorker) Я теперь смущен, если это была хорошая идея. Я собрал то, что вы обычно не пропускаете фоновый поток, потому что система позаботится об этом.
Однако в моем случае этот метод, по-видимому, полезен для меня.
Может ли кто-нибудь уточнить возможные проблемы с этой реализацией?
Любой ввод оценивается. Это касается конкретной темы, а также общего дизайна. Если я делаю что-то неправильно, я хочу это знать. :)
Привет
SwingWorker (несмотря на то, что этот форум любит SwingWorker) не очень хорошая идея, я бы предложил использовать стандартный (простой, управляемый, настраиваемый по сравнению с SwingWorker) Runnable # Thread – mKorbel