我想在服用之前检查一个头部元素但是提高了
窥视时java.lang.NullPointerException
,
使用java BlockingQueue
BlockingQueue sharedQueue = new LinkedBlockingQueue()
这是我的代码,任何想法?
while(true){
try {
if(!sharedQueue.isEmpty()){
char ch = (char)sharedQueue.peek();
if(Character.isDigit(ch)){
digitTextField.setText(digitTextField.getText()+sharedQueue.take());
}
}
} catch (InterruptedException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:4)
这是因为您正在向char
投射不允许空值。此外,不要sharedQueue.isEmpty()
后跟peek
- 这被称为“check-then-act”,这是众所周知的种族原因。
您应该将sharedQueue
定义为BlockingQueue<Character>
,然后使用
if ((Character c = sharedQueue.poll()) != null)
答案 1 :(得分:1)