A Runnable Is Not a Thread

A Runnable Is Not a Thread

You may come across some situations where implementing a Runnable may have some advantages over extending Thread. If the class you are going to multi-thread is already extending another class, you have to implement the java.lang.Runnable interface, which is obvious. What may not be obvious is that a Runnable is not a thread. A Runnable is a class like any other class in Java. For a Runnable to become a Thread, you have to feed your Runnable to an actual java.lang.Thread object.

 public class ARunnable implements Runnable { . . . public void run() { /* the code to run threaded goes here */ } ... } 

Then you do:

 Runnable myRunnable = new ARunnable(); Thread myThread = new Thread (myRunnable); myThread.start(); 

Your code in the run() method of the Runnable will run threaded, but since a Runnable is not a thread, you can run the Runnable in a non-multi-threaded mode by explicitly calling its run method. This is a handy way for tracing the logic of the code in your Runnable before running it multi-threaded.


Share the Post: