首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java计时器错误异常

Java计时器错误异常
EN

Stack Overflow用户
提问于 2011-08-08 01:11:17
回答 1查看 5.3K关注 0票数 2

我在执行一个定时器任务的时候出现了一个奇怪的错误,是什么导致的?

代码语言:javascript
复制
public void tick(long milliseconds) {
ctimer = new Timer();
ctimer.schedule(new TimerTask() {
public void run() {
    System.out.println("sec"+sequencer.getMicrosecondPosition()/1000000);           }
}, 0, milliseconds);
}

来自命令提示符的错误消息:

代码语言:javascript
复制
Exception in thread "Timer-0" java.lang.NullPointerException
        at MidiTest$1.run(miditest.java:244)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-08 01:14:25

我敢打赌,sequencer.getMicrosecondPosition()会返回一个Long,并且它是空的。发生这个问题是因为自动装箱/取消装箱不能处理空值。

编辑

自动装箱是指java将原始类型转换为它的对象包装器,例如从long转换为Long。您可以在这些docs中阅读有关此功能的更多信息。

没有解决这个问题的方法,因为这取决于你想要做什么。也许您可以将run()的主体替换为

代码语言:javascript
复制
long position = 0;
if( sequencer.getMicrosecondPosition() != null ) {
    position = sequencer.getMicrosecondPosition();
}

System.out.println("sec" + position/1000000);

如果getMicrosecondPosition()为空,则默认位置为0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6974334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档