创建线程的方式
创建线程有四种方式:
(1)继承Thread类重写run()方法,调用start()方法启动线程。
(2)实现Runable接口,实现run()方法。
(3)实现Callable接口,实现call()方法。
(4)线程池创建线程。
为什么要使用线程池:减少线程的上下文切换带来的损耗、减少创建线程和销毁线程带来的损耗、充分利用CPU资源。
实现Runable接口和实现Callable接口创建线程的区别:
实现Runable接口实现的run()方法没有返回值,因此这种方法不能获取线程执行的返回值,而实现Callable接口实现的call()方法有返回值,可以搭配FutureTask调用FutureTask.get()可以获取线程执行的结果。
启动线程为什么要执行start()方法而不是执行run()方法的原因:
执行start()方法才是启动线程,线程启动后会由该线程去执行run()方法。而直接调用run()方法只是有主线程去执行,相当于执行一个普通方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)