Table of Contents
One of the methods to run tasks in multiple thead is to pass Runnable instance to thread and call that start()
method.
public class D_Runnable_Thread { public static void main(String[] args) { Thread t = new Thread(new Runnable() { @Override public void run() { System.out.println("start running task..."); } }); t.start(); } }
Runnable is a Functional interface that has only one method that returns void.
If you prefer the lambda syntax, you can write the above code like so:
public class D_Runnable_Thread { public static void main(String[] args) { Thread t = new Thread(() -> System.out.println("start running task...")); t.start(); } }
However, for tasks with more than a few lines of code, you would prefer to create a class that implement Runnable
.
Class implements Runnable
It’s quite simple to create a class implementing Runnable
. You only need to implement the run()
method:
public class D_Runtask implements Runnable{ @Override public void run() { System.out.println("starting..."); System.out.println("running..."); } }
Now, you can create an instance of this class and pass to a Thread to start the execution:
public static void main(String[] args) { (new Thread(new D_Runtask())).start(); }
Output:
Passing data into Runnable
In case you need to pass parameters to the job, simply pass them using constructor:
public class D_Runtask implements Runnable { private String name; public D_Runtask(String name) { this.name = name; } @Override public void run() { System.out.println("starting..." + this.name); System.out.println("running..." + this.name); } public static void main(String[] args) { (new Thread(new D_Runtask("Super task"))).start(); } }
Output:
I build softwares that solve problems. I also love writing/documenting things I learn/want to learn.