/** Modified version of an example from TutorialsPoint */ public class RunnableDemo { public static void main(String[] args) { ThreadDemo t1 = new ThreadDemo("A"); ThreadDemo t2 = new ThreadDemo("B"); t1.startThread(); t2.startThread(); ThreadDemo t3 = new ThreadDemo("C"); t3.startThread(); ThreadDemo t4 = new ThreadDemo("D"); t4.startThread(); System.out.println(Thread.currentThread()); } } class ThreadDemo implements Runnable { private Thread t; private String threadName; public ThreadDemo(String n) { System.out.println("Creating thread-" + n ); threadName = n; } public void run() { System.out.println("Running thread-" + threadName); for(int i = 0; i < 10; i++) { System.out.println("thread-" + Thread.currentThread() + ", i=" + i); try { Thread.sleep(10); } catch(InterruptedException e) { System.out.println("No sleep for thread-" + threadName); } } System.out.println("Exiting thread-" + threadName); } public void startThread() { if(t == null) { System.out.println("Starting thread-" + threadName); t = new Thread(this, threadName); t.start(); } } }