java - 在Java中引发异常后重新启动同一个线程
问题描述
我正在尝试在线程中执行一些代码。我已经扩展了 Thread 类并在那里放了一些代码来执行。我也抛出异常来终止当前线程并在 catch 块中重新启动它。它正在这样做,但是当新线程启动时,会显示异常结果。
假设我的要求是打印 counter like 1,2,3,4,5
。这是第一次很好。但是当我启动新实例时,结果是随机的,例如1,1,1,1,1,1,12,4,6,1,1,1,1
. 这是我的代码:
public class ThreadTest {
static Publish publish;
public static void main(String[] args) {
publish = new Publish();
publish.start();
}
static class Publish extends Thread {
static int counter = 1;
public void run(){
while (true) {
System.out.println("counter is: " + counter);
counter++;
try {
Thread.sleep(2000);
if (counter > 5) {
throw new InterruptedException("Exception thrown manually to restart thread");
}
} catch (Exception ex) {
publish.interrupt();
publish.getThreadGroup().interrupt();
counter = 1;
publish = new Publish();
publish.start();
}
}
}
}
}
结果如下:
run:
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 3
counter is: 4
counter is: 1
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 8
counter is: 9
counter is: 11
counter is: 12
counter is: 12
counter is: 14
counter is: 15
counter is: 15
counter is: 17
counter is: 18
counter is: 19
counter is: 20
counter is: 1
counter is: 20
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 20
counter is: 1
counter is: 1
counter is: 20
counter is: 20
counter is: 20
counter is: 20
counter is: 20
counter is: 2
counter is: 20
counter is: 20
counter is: 2
counter is: 20
counter is: 1
counter is: 1
counter is: 2
counter is: 2
counter is: 2
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 2
counter is: 4
counter is: 4
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 2
counter is: 2
counter is: 3
counter is: 4
counter is: 6
counter is: 1
counter is: 1
counter is: 1
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 5
counter is: 3
counter is: 4
counter is: 4
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 6
counter is: 7
counter is: 7
counter is: 2
counter is: 1
counter is: 1
counter is: 3
counter is: 3
counter is: 4
counter is: 6
counter is: 7
counter is: 7
counter is: 6
counter is: 9
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 3
counter is: 1
counter is: 1
counter is: 3
counter is: 2
counter is: 3
counter is: 3
counter is: 4
counter is: 6
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 4
counter is: 2
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 1
counter is: 2
counter is: 1
counter is: 4
counter is: 5
counter is: 5
counter is: 1
counter is: 2
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 6
counter is: 7
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 8
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 5
counter is: 7
counter is: 7
counter is: 1
counter is: 1
counter is: 1
counter is: 4
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 1
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 6
counter is: 8
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 5
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 5
counter is: 7
counter is: 8
counter is: 9
counter is: 10
counter is: 11
counter is: 12
counter is: 13
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 5
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 2
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 2
counter is: 2
counter is: 2
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 5
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 6
counter is: 8
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 8
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 5
counter is: 6
counter is: 7
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 2
counter is: 4
counter is: 1
counter is: 1
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 9
counter is: 9
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 1
counter is: 1
counter is: 2
Exception in thread "Thread-260" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:708)
counter is: 1
counter is: 2
at threadtest.ThreadTest$Publish.run(ThreadTest.java:49)
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 3
counter is: 5
counter is: 6
counter is: 7
counter is: 1
counter is: 1
counter is: 3
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 3
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 3
Exception in thread "Thread-236" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:708)
counter is: 1
at threadtest.ThreadTest$Publish.run(ThreadTest.java:49)
counter is: 1
counter is: 2
counter is: 1
counter is: 4
counter is: 5
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 3
counter is: 1
counter is: 1
counter is: 1
Exception in thread "Thread-165" java.lang.IllegalThreadStateException
counter is: 3
at java.lang.Thread.start(Thread.java:708)
at threadtest.ThreadTest$Publish.run(ThreadTest.java:49)
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 2
counter is: 3
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 6
counter is: 8
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 5
counter is: 7
counter is: 8
counter is: 9
counter is: 10
counter is: 11
counter is: 12
counter is: 13
counter is: 14
counter is: 15
counter is: 16
counter is: 17
counter is: 18
counter is: 19
counter is: 20
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 1
Exception in thread "Thread-156" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:708)
at threadtest.ThreadTest$Publish.run(ThreadTest.java:49)
counter is: 1
counter is: 1
counter is: 1
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 9
counter is: 10
counter is: 11
counter is: 12
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 2
counter is: 2
counter is: 3
counter is: 6
counter is: 7
counter is: 8
counter is: 2
counter is: 3
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 2
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 5
counter is: 5
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 1
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 8
counter is: 10
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 4
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 9
counter is: 10
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 7
counter is: 9
counter is: 9
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 2
counter is: 4
counter is: 5
counter is: 5
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 3
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
counter is: 6
counter is: 7
counter is: 8
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 1
counter is: 2
counter is: 1
counter is: 2
counter is: 6
解决方案
这个程序的问题是线程只是被创建并且从未被销毁,因为你自己中断了正在运行的线程,这就是它被搞砸的地方。线程并没有停止,它继续执行,因为它在循环内。我不会评论这是否是正确的做法。但我建议寻找其他替代方案。我在您的程序中做了一些修改,如下所示:
public class ThreadTest {
static Publish publish;
public static void main(String[] args) {
System.out.println("Initial active threads : " + Thread.activeCount());
publish = new Publish();
publish.start();
}
static class Publish extends Thread {
static int counter = 1;
public void run() {
while (true) {
System.out.println("counter is: " + counter);
counter++;
try {
Thread.sleep(2000);
if (counter > 5) {
throw new InterruptedException("Exception thrown manually to restart thread");
}
} catch (Exception ex) {
counter = 1;
publish = new Publish();
publish.start();
System.out.println("active threads : " + Thread.activeCount());
return;
}
}
}
}
}
这是程序的输出:
Initial active threads : 2
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
counter is: 4
counter is: 5
active threads : 4
counter is: 1
counter is: 2
counter is: 3
如果您想查看程序中正在创建的线程总数并且根本没有停止,请尝试为当前活动线程放置打印语句。
推荐阅读
- css - 无法通过烧瓶中的 css 更改背景图像大小
- java - 即使在释放后如何使按钮保持选中状态?
- scheme - Scheme Lisp 3 × 3 矩阵的行列式
- c - C中的多态性和赋值运算符
- python - gpu 上的张量流很慢,还有更多问题
- animation - D3 arc 和 SVG 2d 到 3d 透视变化
- php - 如何通过 php 与 MySQLi 保持联系
- mongodb - 如何使 $not regexp 查询在 Go 中工作?
- highcharts - highcharts动态背景颜色问题
- javascript - 有没有办法在加载时将自定义键盘快捷键“注入”到页面中?