首页后端开发其他后端知识Java中run和start方法的使用有何异同点?

Java中run和start方法的使用有何异同点?

时间2024-03-28 22:58:03发布访客分类其他后端知识浏览1328
导读:这篇文章我们来了解Java中run和start方法的使用有何异同,一些朋友对于run和start方法的区别不是很清楚,对此这篇就给大家来介绍一下,有需要的朋友可以了解看看,接下来就跟随小编来一起学习一下吧!区别对比如下:我们知道Java中的...

这篇文章我们来了解Java中run和start方法的使用有何异同,一些朋友对于run和start方法的区别不是很清楚,对此这篇就给大家来介绍一下,有需要的朋友可以了解看看,接下来就跟随小编来一起学习一下吧!

区别对比如下:

我们知道Java中的线程是通过Java.lang.Thread来实现的,那么我们就可以通过实例化Thread一个对象来创建一个线程,然后再调用start()启动,但是Thread的一个特定的方法run()也可以启动线程,那么这两个方法有什么区别呢?

线程状态

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

多线程原理:

我们一般使用thread new一个线程,然后调用start方法启动,线程就会处于运行状态中ready,等待CPU调度,然后再执行线程里面的run()方法,使用start方法才真正实现了多线程运行,因为这个时候不用等待我们的run方法执行完成就可以继续执行下面的代码,这才叫多线程。

如果直接使用thread执行run方法会怎么样呢?

因为run方法是thread里面的一个普通的方法,如果直接调用run()方法,这个时候它会运行在主线程中的,因为程序中只有主线程一个线程,如果有两个线程,都是直接调用run()方法,那么他们的执行顺序一定是按顺序执行的,并没有实现多线程的目的。

代码对比

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

    }

}

调用start()方法,线程名是默认的

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

    }

}
    

调用run(),线程名是main

现在大家对于Java中run和start方法的区别应该都有所了解了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Java的内容,大家可以关注网络其它相关文章。

文本转载自PHP中文网

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java中run和start方法的使用有何异同点?
本文地址: https://pptw.com/jishu/655254.html
Java类和对象是什么关系,如何理解类和对象? Java如何声明变量,要注意什么?

游客 回复需填写必要信息