我有一个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);
}
}
我对让线程睡眠想法是减少GET的数量。我的程序不需要每毫秒更新一次以减少服务器负载我认为这将是一个好主意。
看完这个问题之后(java - thread.sleep() within SwingWorker)我现在很困惑,毕竟这是个好主意。我收集的是,通常不会让后台线程进入睡眠状态,因为系统会照顾它。
但在我的情况下,这种方法似乎对我有益。
有人可以详细说明这个实现的可能的问题吗?
任何输入表示赞赏。这适用于特定主题以及一般设计。如果我做错了什么,我想知道它。 :)
问候
SwingWorker的(尽管事实上,本次论坛爱的SwingWorker )是不好的主意,我会建议使用标准(简单,可管理,可与SwingWorker比较)可运行#线程 – mKorbel 2015-04-01 17:14:46