多线程3种创建方式总结

2020-12-01  本文已影响0人  何几时

这个例程还包含 实现Callable接口方法 的第二种调用方法,区别于第一种通过创建线程池的方法提交服务

package demo04_synchronized;

import java.util.concurrent.*;

// 总结,回顾线程的创建
public class ThreadNew {
    public static void main(String[] args) {
        // 1.
        new MyThread01().start();

        // 2.
        new Thread(new MyThread02()).start();

        // 3. 这里展示了 实现Callable对象 的第二种方法,区别于第一种线程池
//        ExecutorService service = Executors.newFixedThreadPool(10);
        FutureTask<Integer> futureTask = new FutureTask<Integer>(new MyThread03());
        new Thread(futureTask).start();

        try {
            Integer integer = futureTask.get();
            System.out.println(integer);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

    }
}

// 1. 继承Thread类
class MyThread01 extends Thread{
    @Override
    public void run() {
        System.out.println("MyThread1");
    }
}

// 2. 实现Runnable接口
class MyThread02 implements Runnable{

    @Override
    public void run() {
        System.out.println("MyThread02");
    }
}

// 3. 实现Callable接口
class MyThread03 implements Callable<Integer>{

    @Override
    public Integer call() throws Exception {
        System.out.println("MyThread03");
        return 100;
    }
}


上一篇下一篇

猜你喜欢

热点阅读