Java线程Thread中start方法 和 run方法 的区别

Thread中start方法 和 run方法 的区别

1.使用 start方法启动线程的时候,JVM虚拟机会在内存中给线程分配一个独立的内存空间,有自己的局部变量等
代码示例

public class ThreadDemo extends Thread{

    String s;

    @Override
    public void run() {
        for (int i = 0;i<5;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "-----" + "线程运行。。。" + this.s);
        }

    }

    public ThreadDemo(String s){
        this.s = s;
        System.out.println("初始化方法" + "----" + s);
    }

    public static void main(String[] args){

        ThreadDemo a = new ThreadDemo("a");
        ThreadDemo b = new ThreadDemo("b");
        a.start();
        b.start();

    }

}

结果

初始化方法----a
初始化方法----b
Thread-0-----线程运行。。。a
Thread-1-----线程运行。。。b
Thread-0-----线程运行。。。a
Thread-1-----线程运行。。。b
Thread-1-----线程运行。。。b
Thread-0-----线程运行。。。a
Thread-0-----线程运行。。。a
Thread-1-----线程运行。。。b
Thread-0-----线程运行。。。a
Thread-1-----线程运行。。。b
  1. 使用run方法启动线程的时候,就是使用主线程运行,会按照顺序进行调度方法,不会出现抢占资源的情况

代码示例

public class ThreadDemo extends Thread{

    String s;

    @Override
    public void run() {
        for (int i = 0;i<5;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "-----" + "线程运行。。。" + this.s);
        }

    }

    public ThreadDemo(String s){
        this.s = s;
        System.out.println("初始化方法" + "----" + s);
    }

    public static void main(String[] args){

        ThreadDemo a = new ThreadDemo("a");
        ThreadDemo b = new ThreadDemo("b");
        a.run();
        b.run();


    }

}

输出结果

初始化方法----a
初始化方法----b
main-----线程运行。。。a
main-----线程运行。。。a
main-----线程运行。。。a
main-----线程运行。。。a
main-----线程运行。。。a
main-----线程运行。。。b
main-----线程运行。。。b
main-----线程运行。。。b
main-----线程运行。。。b
main-----线程运行。。。b

猜你喜欢

转载自blog.csdn.net/qq_35371031/article/details/88723979