创建线程的三种方法

2020-09-14  本文已影响0人  YAOPRINCESS
package com.kang.multithread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author klr
 * @create 2020-09-14-12:59
 */
public class ThreadTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {

        //1 thread
        Thread t = new Thread("1"){
            @Override
            public void run() {
                System.out.println(1);
            }
        };
        t.start();

        //2 runnable
        Runnable runnable = () -> System.out.println(2);
        runnable.run();//主线程执行
        Thread t1 = new Thread(runnable,"2");//其他线程执行
        t1.start();

        //3 futuretask
        //integer是返回类型
        FutureTask<Integer> futureTask = new FutureTask(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                System.out.println(3);
                Thread.sleep(1000);
                return 100;
            }
        });
//        futureTask.run();//主线程执行

        Thread t2 = new Thread(futureTask);//交给其他线程执行
        t2.start();

        System.out.println(futureTask.get()+"1");//主线程会一直阻塞在这等结果
    }
}
上一篇 下一篇

猜你喜欢

热点阅读