Поток выбрасывает нулевой указатель после x раз
Изменить: Это не так просто, как бросать nullpointerexception. Поток работает несколько раз, прежде чем выдать nullpointerexception, что означает, что он внезапно решает прекратить работу, и я не могу понять, почему
Здравствуйте, у меня есть следующая тема
private class IsCreditAdded implements Runnable{
ActionEvent evt;
public IsCreditAdded(ActionEvent evt){
this.evt = evt;
}
@Override
public void run(){
while (AddMinutes.creditChosen != true){
}
creditAdded(evt, AddMinutes.getEvt());
}
}
Он ожидает изменения логического значения из класса GUI с параметрами выбора значения, а затем при изменении логического значения выполняет метод creditAdded со значениями evt(переданный из конструктора) и статический getMethod, содержащий ActionEvent, который был выбранный
public void creditAdded(ActionEvent evt, ActionEvent duration){
System.out.println(evt.getActionCommand() + " " + duration.getActionCommand());
switch (evt.getActionCommand()){
case ("voipCredit"):
switch (duration.getActionCommand()){
case ("cancel"):
System.out.println("CANCEL");
disableButtons(evt, duration);
break;
}
addMinutes.dispose();
AddMinutes.reset();
sessionStorage.printTransActions();
}
Вот где создается нить:
private void creditButtonActionPerformed(java.awt.event.ActionEvent evt) {
switch (evt.getActionCommand()){
case ("voipCredit"):
addMinutes = new AddMinutes();
addMinutes.setService("VOIP");
addMinutes.setVisible(true);
addMinutes.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addMinutes.setPrices(nf.format(SessionPrices.getVOIP_10_MINS()), nf.format(SessionPrices.getVOIP_30_MINS()),
nf.format(SessionPrices.getVOIP_1_HOUR()), nf.format(SessionPrices.getVOIP_ALL_DAY()));
threadVar = new Thread(new IsCreditAdded(evt));
threadVar.start();
disableAllButtons();
break;
}
}
Теперь проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я выбираю кнопку, которая дает команду getActionCommand "отменить", она работает два раза, иногда три, но затем, если я пытаюсь сделать это снова, я получаю нулевое исключение. Фактическое сообщение об ошибке, которое я получаю:
Исключение в потоке "Thread-6" java.lang.NullPointerException на com.aidanmoore.InternetCafeGUI.creditAdded(InternetCafeGUI.java:416) на com.aidanmoore.InternetCafeGUI$IsCreditAdded.run(InternetCafeG4) at.javaj at.Thread.run(Thread.java:745)"ОСТАНОВЛЕНА СТРОКОМ (общее время: 9 секунд)"
Я не могу понять, почему оно выдает это исключение после нескольких часов поиска похожих проблем, с которыми сталкивались другие, и, поскольку поток работает x раз, прежде чем выдать исключение, я не могу понять, почему оно внезапно выходит из строя.