创建多线程有几种方式?

2023-12-26 13:08:12

1、继承Thread类重写run方法

2、实现Runnable接口实现多线程

3、通过Callable和FutureTask实现多线程

4、使用线程池创建多线程

Runnable和Callable的区别:?

Runnable和Callable都可以创建多线程,但是Runnable需要重写run方法,Callable需要实现call方法

Runnable的run方法无返回值,Callable的call方法有Object类型的返回值

Future?

Future是一个接口,代表一个异步执行的结果,接口中的方法用来检查执行是否完成、等待完成和得到执行的结果。当执行完成后,只能通过get方法得到结果,get方法会阻塞到有结果,可以通过cancel方法取消

FutureTask是Future接口的一个实现。

FutureTask和Callable代码示例:

 public static void main(String[] args) throws ExecutionException, InterruptedException {
        Callable<String> callable = ()->{
            System.out.println("Callable");
            Thread.sleep(2000);
            return "Hello from Callable";
        };
        FutureTask<String> task = new FutureTask<>(callable);
        Thread thread = new Thread(task);
        thread.start();
        System.out.println("返回:"+task.get());
    }

线程池:

线程池

线程池和Callable示例:

public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Callable<String> callable = ()->{
            Thread.sleep(2000);
            return "Hello from Callable";
        };
        Future<String> submit = executorService.submit(callable);
        System.out.println("返回:"+submit.get());
    }

文章来源:https://blog.csdn.net/weixin_43005845/article/details/135211256
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。