导航
首页
开发相关
后端技术
工具资源
随笔
其他
总结
留言板
Java 线程的创建方式有哪些?
转载
发布于
2021-11-03 09:45:39
|
开发相关
| 浏览(
120
) | 评论(
0
)
Java 线程的创建方式有哪些? === 1. 继承Thread类实现 1. 实现Runnable接口方式 1. 实现Callable接口方式 ** 其中前两种比较常用。但是,需要有返回值需要实现Callable接口。** ### 1.继承Thread类实现 ``` /** * 继承Thread类,并重写run方法 */ public class MyThread extends Thread { @Override public void run() { super.run(); System.out.println("MyThread..."); } } ``` 调用: ``` MyThread thread = new MyThread(); thread.start(); ``` **注意** * 调用start方法并不意味立刻执行run方法,只是使该线程处于可运行状态,具体什么时候执行,由系统来决定。 * java不支持多继承,这种方式有继承限制。 ### 2.实现Runnable接口方式 ``` /** * 实现Runnable接口,并重写run方法 */ public class MyRunnable implements Runnable{ @Override public void run() { System.out.println("MyRunnable..."); } } ``` 调用: ``` MyRunnable runnable=new MyRunnable(); Thread thread=new Thread(runnable); thread.start(); ``` **注意** 限制较小,推荐用这个方式。 ### 3.实现Callable接口方式 ``` /** * 实现Callable接口,并重写call方法 */ public class MyCallable implements Callable<String>{ @Override public String call() throws Exception { return "MyCallable..."; } } ``` 调用: ``` //创建和调用 MyCallable callable=new MyCallable(); ExecutorService eService=Executors.newSingleThreadExecutor(); Future<String> future=eService.submit(callable); //获取返回结果 try { String result=future.get(); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } ``` **注意** * callable需要配合线程池使用 * callable比runnable功能复杂一些 * Callable的call方法有返回值并且可以抛异常,而Runnable的run方法就没有返回值也没有抛异常,也就是可以知道执行线程的时候出了什么错误。 * Callable运行后可以拿到一个Future对象,这个对象表示异步计算结果,可以从通过Future的get方法获取到call方法返回的结果。但要注意调用Future的get方法时,当前线程会阻塞,直到call方法返回结果。
本文转自
https://blog.csdn.net/weixin_45151795/article/details/105759271
,如有侵权,请联系删除。
点赞
5
打赏
微信赞赏
支付宝赞赏
发表评论
欢迎您:
发表评论
最新文章
推荐
点击排行
1
再给领克旧车机一次机会——雷达触发360全景、转向灯触发360全景、汽车事件联动车机、超速提示。。。一样都不能少
2
GO配置国内镜像
3
Java 线程的创建方式有哪些?
4
IOS、Mac中国法定节假日
5
卸载阿里云监控软件方法
6
iftop – 实时 Linux 网络带宽监控工具
7
免费申请和使用IntelliJ IDEA商业版License指南
8
ssh 远程执行命令
9
使用 systemd 限制系统资源的使用
10
如何更规范化编写Java 代码
1
再给领克旧车机一次机会——雷达触发360全景、转向灯触发360全景、汽车事件联动车机、超速提示。。。一样都不能少
2
Mac OS 最好用的鼠标手势软件 MacStroke
3
git 找回丢失的commit
4
小米路由器插件
5
Redis中的批量删除数据库中的Key
6
LINUX 安装多个版本JDK
7
免费申请和使用IntelliJ IDEA商业版License指南
8
精简 迅雷 for MAC
9
Dnsmasq 配置文件详解
10
Nginx深入详解之upstream分配方式
1
小米路由器插件
2
基于Android Webview的Hybrid App开发的前端优化
3
LINUX 安装多个版本JDK
4
Android Studio使用心得 - 常见问题
5
XDebug 调试PHP 配置
6
mysql主从复制
7
Git忽略规则及.gitignore规则不生效的解决办法
8
如何在一台机器上配置多个git的rsa
9
关于Android与pc通信时中文乱码的分析和解决
10
MacStroke
标签云
Linux
Java
Spring
Spring Boot
其他
IntelliJ IDEA
MacOS
工具
资源
JavaScript
Mac
网站信息
浏览总数:
639987
文章总数:
47
篇
标签总数:
11
个
分类总数:
6
个
留言数量:
17
条
关于本站
MTJO
明天见哦
Copyright © 2023. MTJO ·
桂ICP备16000489号-1
Powered by
MTJO