调用构造函数时,线程“ Thread-4”中的异常java.lang.NullPointerException

时间:2018-10-28 09:35:37

标签: java nullpointerexception

我正在用Java制作中提琴。在这种情况下,我想播放音高,记录音高并进行播放。

然后,我使用Java线程向队列添加音调并向队列添加延迟。我将线程对象用于这些过程,并在构造函数中调用它。调用此构造函数后,它给出NullPointException

您能帮我找出原因吗?

public PianoPlayer() throws MidiUnavailableException{
     queue = new LinkedBlockingQueue<NoteEvent>();  
     delayQueue = new LinkedBlockingQueue<NoteEvent>();
     machine = new PianoMachine(this);
     processQueue.start();
     processDelayQueue.start();
}

Thread processDelayQueue = new Thread() {
    public void run(){
        while(true){
            if(queue.isEmpty()){
            }
            else{
                try {
                    NoteEvent e=queue.take();
                    midi.Midi.wait(100);
                    queue.put(e);            
                } catch (InterruptedException ex) {
                    Logger.getLogger(PianoPlayer.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
   }
};

1 个答案:

答案 0 :(得分:0)

检查processQueue和processDelayQueue是否不为null。 NullPointerException通常是在您尝试调用方法或从对象为null的变量中获取值时引起的。

例如

MyClass c = null;
// NullPointerException
String name = c.getName();

可能的解决方法

MyClass c = null;
if (c == null) {
    // initialize
    c = new MyClass();
}
// This will work
String r = c.getName();

您需要始终进行null检查,因为获取null变量非常常见。