недавно я создаю функцию printName(String s)
, включая класс Timer
и класс TimerTask
. Однако, когда я использую эту функцию непрерывно, она показывает эту ошибку:
a
Exception in thread "Timer-1" Exception in thread "Timer-0" java.lang.NullPointerException
a
at ProxyPattern.TimerTest$1.run(TimerTest.java:21)
a
c
at java.util.TimerThread.mainLoop(Timer.java:555)
c
c
at java.util.TimerThread.run(Timer.java:505)
c
java.lang.NullPointerException
c
at ProxyPattern.TimerTest$1.run(TimerTest.java:21)
b
at java.util.TimerThread.mainLoop(Timer.java:555)
b
b
at java.util.TimerThread.run(Timer.java:505)
b
b
a
a
это мой код:
public class TimerTest {
Timer timer;
TimerTask timerTask;
public void printName(String s) {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(s);
}
timerTask.cancel();
timerTask = null;
}
};
timer.schedule(timerTask, 0, 1);
}
public static void main(String[] args) {
TimerTest timerTest = new TimerTest();
timerTest.printName("a");
timerTest.printName("b");
timerTest.printName("c");
}
}
Я надеюсь, что он напечатает «a» пять раз, а затем напечатает «b» пять раз, наконец, напечатает «b» пять раз. Просто так:
a
a
a
a
a
a
b
b
b
b
b
c
c
c
c
c
как это исправить?