Difference between Thread start() and Runnable run()
Lets first understand run() method of Runnable. Consider following code snippet.
Source code (Car.java)
Runnable in Thread
Conclusion
- run method of Runnable will be executed as normal method of class.
- start method of Thread starts the new Thread.
Source code (Car.java)
public class Car implements Runnable{
@Override
public void run() {
System.out.println("Run car...");
}
}
Source code (Cycle.java)
public class Cycle{
public void run() {
System.out.println("Run cycle...");
}
}
public class Test {
public static void main(String[] args) {
/* Calling method of class Cycle */
new Cycle().run();
/* Calling method of class Car, doesn't matter class implements Runnable */
new Car().run();
}
}
There is no difference between new Cycle().run() and new Car().run() even if Car implements Runnable . You are just calling method of class Car.
Runnable in Thread
public class Test {
public static void main(String[] args) {
Thread thread = new Thread(new Car());
/* It'll start new Thread and call run method of Car() in Thread environment */
thread.start();
}
}
run method of Car will be executed in separate Thread environment. thread.start() will start new Thread.
Conclusion
- run method of Runnable will be executed as normal method of class.
- start method of Thread starts the new Thread.
0 comments :