实现Callable接口创建线程
通过实现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接口创建线程的方式可以更灵活地控制线程的执行过程,并且可以获取线程执行的结果。