Thread methods : getId, getName, isAlive, sleep, interrupt

Java example


This example presents some popular methods about Thread, especially: getId, getName, isAlive, sleep, interrupt.

Get the sources of the example from the following GitHub url : https://github.com/javaspringexamples/ThreadPopularMethods.git

Or Download a .zip file : https://github.com/javaspringexamples/ThreadPopularMethods/archive/master.zip

package javaspringexamples.ThreadExamples;

/**
 * This class presents how to implement a thread by extending the Thread class,
 * and using sleep method.
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class ThreadByExtension extends Thread {

	public ThreadByExtension(String name) {
		super(name);
	}

	@Override
	public void run() {
		System.out.println("Running " + getName());
		try {
			// Using sleep method.
			sleep(1000);
		} catch (InterruptedException e) {
			// ...Do something to handle the exception.
			System.out.println(getName() + " is interrupted");
		}
	}
}
package javaspringexamples.ThreadExamples;

/**
 * This class presents how to implement a thread by implementing the Runnable
 * interface, and using sleep method.
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class ThreadByImplementation implements Runnable {

	@Override
	public void run() {
		try {
			System.out.println("Running " + this.getClass().getName());
			Thread.sleep(6000);
		} catch (InterruptedException e) {
			// ...Do something to handle the exception.
			System.out.println(Thread.currentThread().getName() + " is interrupted");
		}

	}
}
package javaspringexamples.ThreadExamples;

/**
 * This class presents some popular methods about threads, especially : getId,
 * getName, isAlive, sleep, interrupt.
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class TestThread {

	public static void main(String[] args) throws InterruptedException {

		// Thread by extending the Thread class.
		ThreadByExtension t1 = new ThreadByExtension("t1");
		t1.start();
		System.out.println("t1 isAlive=" + t1.isAlive());

		// Thread by implementing the Runnable interface.
		Thread t2 = new Thread(new ThreadByImplementation(), "t2");
		t2.start();
		// Interrupting t2
		t2.interrupt();

		// Thread by implementing the Runnable interface anonymously.
		Runnable r1 = new Runnable() {
			@Override
			public void run() {
				System.out.println("Running Anonymous object runnable.");
			}
		};
		Thread t3 = new Thread(r1);
		t3.start();

		// Thread by implementing the Runnable interface anonymously using
		// lambda expression.
		Runnable r2 = () -> System.out.println("Running runnable object using lambda expression Runnable.");
		Thread t4 = new Thread(r2);
		t4.start();

		// Waiting for the t1 to be terminated.
		t1.join();

		// t1.is Alive will be always false, because t1 is terminated.
		System.out.println(t1.getId() + " " + t1.getName() + " " + t1.getPriority() + " isAlive=" + t1.isAlive());
		System.out.println(t2.getId() + " " + t2.getName() + " " + t2.getPriority());
		// The threads names are generated by the JVM, they begin by "Thread-"
		System.out.println(t3.getId() + " " + t3.getName() + " " + t3.getPriority());
		System.out.println(t4.getId() + " " + t4.getName() + " " + t4.getPriority());

	}
}