I am trying to execute some code in a thread. I have extend the Thread class and put some code there to execute. I am also throwing exception to terminate the current thread and restart it in the catch block. It is doing so but when new Thread start then abnormal result is shown.
Suppose my requirement is to print counter like 1,2,3,4,5. It is well for the first time. But when I start new Instance then the result is random something like 1,1,1,1,1,1,12,4,6,1,1,1,1. Here is my code:
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(); } } } } } The result are like below:
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
RunnableorCallableand replace that.return.newobject gets new heap memory. It isn't special forThread.