实现Callable接口创建线程

发布时间 2023-04-01 20:47:22作者: 海边蓝贝壳

​ 通过实现Callable接口创建线程与实现Runnable接口创建线程类似,不同之处在于Callable的call()方法可以返回一个结果,并且可以抛出异常。

以下是通过实现Callable接口创建线程的示例代码:

import java.util.concurrent.Callable;

public class MyCallable implements Callable<String> {
    public String call() throws Exception {
        return "Callable thread is running";
    }
}

​ 在上面的示例中,MyCallable类实现了Callable接口,并重写了call()方法,在call()方法中定义了线程要执行的任务,并返回了一个字符串类型的结果。

下面是在主线程中创建并启动Callable线程的示例代码:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Main {
    public static void main(String[] args) throws Exception {
        MyCallable callable = new MyCallable();

        // 创建一个线程池
        ExecutorService executorService = Executors.newFixedThreadPool(1);

        // 提交任务并获取Future对象
        Future<String> future = executorService.submit(callable);

        // 等待任务执行完成并获取结果
        String result = future.get();

        System.out.println(result);

        // 关闭线程池
        executorService.shutdown();
    }
}

​ 在上面的示例中,创建了一个ExecutorService线程池,然后将MyCallable任务提交到线程池中,调用Future的get()方法等待任务执行完成并获取结果,最后关闭线程池。

​ 总体来说,通过实现Callable接口创建线程的方式可以更灵活地控制线程的执行过程,并且可以获取线程执行的结果。