Задание уже запланировано или отменено - PullRequest
0 голосов
/ 12 мая 2019

недавно я создаю функцию 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

как это исправить?

...