线程的三种实现方式

最近有看到Java线程的实现相关问题,在此对线程实现方式做一个小小的总结,当做笔记,便于日后查看。

平时常用的线程方式有三种:

(1)、继承Thread类,并重写其run()方法。

(2)、实现Runnable接口,并实现其run()方法。

(3)、实现Callable接口,并实现其call()方法。

下面对三种实现方法进行一个简单的讲解:

1、继承Thread

public class MyThread1 extends Thread {
    @Override
    public void run() {
        System.out.println("MyThread1.java");
    }
}

启动方式:

public class TestMain {
    public static void main(String[] args) {
        //1.继承Thread类,重写run方法。
        Thread thread = new MyThread1();
        thread.start();
    }
}

2、实现Runnable接口

public class MyThread2 implements Runnable {
    @Override
    public void run() {
        System.out.println("MyThread2.java ");
    }
}

线程启动方式:

public class TestMain {
    public static void main(String[] args) {
        //2.实现runnable接口,并实现该接口的run()方法
        MyThread2 thread2 = new MyThread2();
        Thread t = new Thread(thread2);
        t.start();
    }
}

3、实现Callable接口

public class MyThread3 implements Callable {
    @Override
    public String call() throws Exception {
        return "MyThread3.java";
    }
}

线程启动方式:

public class TestMain {
    public static void main(String[] args) {
        //3.实现Callable接口,重写call方法。
        // 启动线程
        try {
            ExecutorService threadPool = Executors.newSingleThreadExecutor();
            Future future = threadPool.submit(new MyThread3());
            System.out.println(future.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

在平时的使用中,个人前两种使用的比较多,另外的线程实现方式等后续学习了再进行补充。

你可能感兴趣的:(日常笔记)