search
HomeJavaJavagetting StartedWhat 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

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-------->终止状态

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();
    }
}

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();
    }
}

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!

Statement
This article is reproduced at:csdn. If there is any infringement, please contact admin@php.cn delete

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools