Areses

导航

多线程Thread,Run()/Start() 运行的区别

下面是继承了Thread类的线程

当一个类同时有子线程和主线程的时候,那么两条线程是一起运行的,

先后顺序由CPU进行调度,还是下面的代码:测试直接使用run(),start();

public class ThreadTest1 extends Thread{

    /**
     * 线程 Thread类
     * Thread 实现了 Runnable接口
     *
     * 这里是线程体
     */
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("线程体:"+i);
        }
    }

    /**
     * 主线程
     * @param args
     */
    public static void main(String[] args) {
        ThreadTest1 threadTest1 = new ThreadTest1();
        threadTest1.start();
        for (int i = 0; i < 20; i++) {
            System.out.println("主线程:"+i);
        }
    }
}

使用run() 运行:

Run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;

使用run方法直接运行的时候,测试了10次,没有都是先运行run()方法内部的程序,在运行Main()方法内的程序,

run方法可以创建一个线程,但是相当于同步的方式,没有多线程的存在。

使用run方法总结: 和我们之前的程序一样,直接从上而下运行。当run() 方法结束后在运行主线程中的程序。

使用Start() 方法运行:

start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

主线程:14 主线程:15 主线程:16 主线程:17 主线程:18 主线程:19 线程体:2 线程体:3 线程体:4 线程体:5 线程体:6 线程体:7 线程体:8 线程体:9 线程体:10

使用Start() 运行程序的时候,发现结果会出现交替运行。

只有调用start方法才是交给jvm管理,才是多线程。

posted on 2021-06-25 14:26  xxxsyzq  阅读(123)  评论(0编辑  收藏  举报