线程的创建

public class Test {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        new Thread1().start();
        new Thread(new Thread2()).start();

        new Thread(new FutureTask<String>(new Thread3())).start();
        FutureTask<String> futureTask = new FutureTask<String>(new Thread3());
        Thread thread = new Thread(futureTask);
        thread.start();
        //通过get()方法获取返回值
        System.out.println(futureTask.get());
    }
}
class Thread1 extends Thread {
    @Override
    public void run() {
        System.out.println("第一种 extends Thread 方式创建线程");
    }
}
class Thread2 implements Runnable {
    @Override
    public void run() {
        System.out.println("第二种 implements Runnable 方式创建线程");
    }
}
class Thread3 implements Callable<String> {
    //call()中返回类型为Callable<String>中类型确定
    @Override
    public String call() throws Exception {
        System.out.println("第三种 implements Callable 创建线程");
        return "String";
    }
}
第三种方式说明:

FutureTask是Runnable的实现类,同时包含了上图的构造方法 另外使用Callable来进行多线程编程,可以有返回值,且可以抛出异常

posted @ 2022-05-11 15:19  九月!!  阅读(23)  评论(0)    收藏  举报