Java开启多线程的三种方法

2019-11-10  本文已影响0人  汇源可乐

开启多线程的三种方法

0x01:继承\color{blue}{Thread} 类,重写\color{green}{run()} 方法,在\color{green}{run()}方法体中编写要完成的任务
0x02:实现\color{blue}{Runnable}接口,实现\color{green}{run()} 方法,并把实现\color{blue}{Runnable}接口的对象作为target传入\color{blue}{Thread}的构造方法启动线程
0x03:实现\color{blue}{Callable}接口,实现\color{green}{call()} 方法,使用\color{blue}{FutureTask}类来包装\color{blue}{Callable}对象,使用\color{blue}{FutureTask}对象作为target传入\color{blue}{Thread}的构造方法启动线程,调用\color{blue}{FutureTask}\color{green}{get()}方法来获得子线程执行结束后的返回值

第一种方式

static class MyThread extends Thread{
        public MyThread() {
            super(MyThread.class.getSimpleName());
        }
        @Override
        public void run() {
            super.run();
            //Todo
            System.out.println(currentThread().getName());
        }
    }

    static void crateThread()
    {
        MyThread thread=new MyThread();
        thread.start();
    }

console输出:    MyThread

第二种方式

Runnable runnable=new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        };
        Thread thread=new Thread(runnable);
        thread.setName("0x02");
        thread.start();

console输出:    0x02

第三种方式

  static class MyCallable implements Callable {
        @Override
        public Object call() throws Exception {
            return 10086;
        }
    }

 public static void threadExamples() {
        MyCallable myCallable = new MyCallable();
        FutureTask<Integer> ft = new FutureTask<>(myCallable);
        new Thread(ft).start();
        try {
            System.out.println(ft.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }

console输出:    10086

FutureTask源码分析

上一篇 下一篇

猜你喜欢

热点阅读