创建多线程有几种方式?
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!