Home > Java > Javagetting Started > What is the difference between start method and run method in java thread

What is the difference between start method and run method in java thread

王林
Release: 2021-05-01 12:04:04
forward
3326 people have browsed it

What is the difference between start method and run method in java thread

The differences are as follows:

We know that threads in Java are implemented through Java.lang.Thread, then we can instantiate Thread An object is used to create a thread, and then call start() to start it. However, a specific method run() of Thread can also start the thread. So what is the difference between these two methods?

Thread status

在Java当中,线程通常有五种状态:创建、运行、阻塞、等待、终止
NEW------------------->新建状态,没有调用start()之前的状态
RUNNABLE---------->运行状态,(running执行中,ready就绪(等待cpu时间片))
BLOCKED------------>阻塞状态,
WAITING-------------->等待状态,没有明确的等待结束时间,调用wait()
TIMED_WAITING—>超时等待状态,有明确的等待时间,如:sleep(xxx)
TERMINATED-------->终止状态
Copy after login

Multi-threading principle:

We generally use thread new to start a thread, and then call the start method to start, the thread will be in the running state ready, waiting for the CPU Scheduling, and then executing the run() method in the thread, using the start method truly realizes multi-threaded operation, because at this time we can continue to execute the following code without waiting for our run method to complete. This is called multi-threading.

What happens if you directly use thread to execute the run method?

Because the run method is an ordinary method in thread, if the run() method is called directly, it will run in the main thread at this time, because there is only one main thread in the program. If there are two Threads all call the run() method directly, so their execution order must be executed in sequence, and the purpose of multi-threading is not achieved.

Free learning video sharing: java video tutorial

Code comparison

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.start();
    }
}
Copy after login

Call the start() method, the thread name is the default

What is the difference between start method and run method in java thread

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.run();
    }
}
Copy after login

Call run(), the thread name is main

What is the difference between start method and run method in java thread

##Related recommendations:

java introductory tutorial

The above is the detailed content of What is the difference between start method and run method in java thread. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template