java-ScheduledExecutorService的异常行为
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-ScheduledExecutorService的异常行为,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试在正在开发的应用程序上使用ScheduledExecutorService,但是我的行为不固定,无法弄清楚我做错了什么还是已知问题.
我已经尝试了文档中的示例:
class BeeperControl {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() {
System.out.println("beep");
}
};
final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(
beeper, 10, 10, TimeUnit.SECONDS);
scheduler.schedule(new Runnable() {
public void run() {
beeperHandle.cancel(true);
}
}, 60 * 60, TimeUnit.SECONDS);
}
public static void main(String[] args) {
new BeeperControl().beepForAnHour();
}
}
但这只会在10分钟内将值“哔”打印4次,而应该每10秒打印一次.有人可以给我些帮助吗?
亲切的问候,
卡洛斯·费雷拉
编辑:
我在打印指令中添加了更多信息,并在2台不同的计算机上运行了代码,一台使用Windows XP,另一台使用Unix,查看结果:
UNIX系统
在2011年10月17日星期一13:31:34发出哔哔声
于2011年10月17日星期一13:31:44发出哔哔声
在2011年10月17日星期一13:31:54发出哔哔声
在2011年10月17日星期一13:32:04发出哔哔声
在2011年10月17日星期一13:32:14发出哔哔声
在2011年10月17日星期一13:32:24发出哔哔声
在2011年10月17日星期一13:32:34发出哔哔声
Windows XP
2011年10月17日星期一13:24:21发出哔哔声
2011年10月17日星期一13:25:54发出哔哔声
2011年10月17日星期一13:27:08发出哔哔声
2011年10月17日星期一13:28:03发出哔哔声
在2011年10月17日星期一13:28:48发出哔哔声
在2011年10月17日星期一13:29:40发出哔哔声
在2011年10月17日星期一13:30:31发出哔哔声
解决方法:
This article是理解问题的一个很好的起点.基本上,Windows计时器有问题. jdk ScheduledExecutorService实现利用有问题的Java中基于“ nano time”的API.我们必须更改代码,以便它在Windows上使用java.util.Timer(使用基于毫秒的API,并且似乎在Windows上可靠地工作),并在其他地方使用ScheduledExecutorService.
内容总结
以上是互联网集市为您收集整理的java-ScheduledExecutorService的异常行为全部内容,希望文章能够帮你解决java-ScheduledExecutorService的异常行为所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。