Home >Java >javaTutorial >Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 16:53:39296browse

Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

Thread.start() and Runnable.run() in Multithreading

When delving into multithreading, we often encounter two crucial methods: Thread.start() and Runnable.run(). Understanding the distinction between them is essential for effective thread management.

Runnable.run()

The run() method is a key part of implementing the Runnable interface. It defines the code that needs to be executed as a separate thread. By calling run(), you essentially initiate the execution of the implemented code within the calling thread.

Thread.start()

Unlike run(), calling Thread.start() does not directly execute the associated thread's code. Instead, it launches a new thread and delegates the execution of the run() method to that new thread. The new thread operates independently of the calling thread, enabling true multithreading.

Key Difference

The fundamental difference lies in whether multiple threads are created. Calling run() simply runs the code within the current thread, whereas start() initiates a new thread to execute the code.

Example

Consider two Runnable classes, R1 and R2:

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}

Case 1: Using run()

R1 r1 = new R1();
R2 r2 = new R2();

r1.run();
r2.run();

In this scenario, both r1 and r2 execute their run() methods sequentially within the same thread. No additional threads are created.

Case 2: Using start()

R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);

t1.start();
t2.start();

When start() is invoked on t1 and t2, new threads are created to run the run() methods of r1 and r2, respectively. This results in true multithreading, with each thread executing independently.

The above is the detailed content of Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn