创建线程的三种方式

创建线程有三种方式:

①继承Thread类(真正意义上的线程类),是Runnable接口的实现。

②实现Runnable接口,并重写里面的run方法。

③使用Executor框架创建线程池。Executor框架是juc里提供的线程池的实现

本文将对前两种给出例子:

(1)继承Thread类

public class Test1 extends Thread {

    public void run(){
        System.out.println("我是继承了Thread的线程");
    }

    public static void main(String[] args) {
        Test1 test1 = new Test1();
        test1.start();
    }

}

(2)实现Runnable接口

public class Test2 implements Runnable{
    @Override
    public void run() {
        System.out.println("我是实现Runnable接口的线程");
    }

    public static void main(String[] args) {
        Test2 test2 = new Test2();
        new Thread(test2).start();
    }
}

一般情况下,用第二种的较多,好处如下:

1>避免类的多重继承,类只能单继承,但是可以实现多个接口.

2>适用于资源的共享,实现Runnable接口的类需要再次用Thread类包装后才能调用start方法。(三个Thread对象包装一个类对象,就实现了资源共享)。

继承Thread类和实现Runnable接口还有另一种方式,就是匿名类,见链接

匿名类创建线程:https://blog.csdn.net/qq_39411607/article/details/79931502

猜你喜欢

转载自blog.csdn.net/qq_39411607/article/details/79929956