(十二)你能说出四种创建线程的方式吗?

简介: Java中创建线程的方式主要有四种:1.继承Thread类实现run方法2.实现Runable接口实现run方法3.实现Callable接口实现call方法4.使用线程池实现

微信搜索《Java鱼仔》,每天一个知识点不错过


(一)每天一个知识点


你能说出四种创建线程的方式吗?


(二)回答


Java中创建线程的方式主要有四种:


1.继承Thread类实现run方法


2.实现Runable接口实现run方法


3.实现Callable接口实现call方法


4.使用线程池实现


(一)继承Thread类实现run方法


直接上代码,继承Thread类,并重写run方法,在main方法中启动线程。


publicclassMyThread1extendsThread{
publicMyThread1() {
    }
@Overridepublicvoidrun() {
System.out.println(Thread.currentThread().getName());
    }
publicstaticvoidmain(String[] args) {
MyThread1myThread1=newMyThread1();
myThread1.start();
    }
}

(二)实现Runable接口实现run方法


实现Runable接口,并实现run方法,在main方法中启动线程。


publicclassMythread2implementsRunnable {
@Overridepublicvoidrun() {
System.out.println(Thread.currentThread().getName());
    }
publicstaticvoidmain(String[] args) {
Mythread2mythread2=newMythread2();
Threadthread=newThread(mythread2);
thread.start();
    }
}

(三)实现Callable接口实现call方法


实现Callable接口,并实现call方法,在main方法中启动线程。Callable接口有返回值,可通过FutureTask.get方法获取,具体实现看代码。


publicclassMythread3implementsCallable<String> {
@OverridepublicStringcall() throwsException {
System.out.println(Thread.currentThread().getName());
return"success";
    }
publicstaticvoidmain(String[] args) throwsExecutionException, InterruptedException {
Callable<String>callable=newMythread3();
FutureTask<String>futureTask=newFutureTask<String>(callable);
Threadthread=newThread(futureTask);
thread.run();
System.out.println(futureTask.get());
    }
}

(四)使用线程池实现


这里我使用最简单的单例线程池来做演示,想要了解更多关于线程池的知识可以看我的往期博客


https://juejin.cn/post/6886462817240219656


publicclassMythread4 {
publicstaticvoidmain(String[] args) {
ExecutorServiceexecutors=Executors.newSingleThreadExecutor();
executors.submit(newRunnable() {
@Overridepublicvoidrun() {
System.out.println(Thread.currentThread().getName());
            }
        });
executors.shutdown();
    }
}


相关文章
|
文字识别 异构计算 Python
关于Github中开源OCR项目的实验过程与思考
新手尝试Git clone Python OCR项目,遇到各种报错。测试了Paddle OCR、Tesseract OCR和EasyOCR。Paddle OCR因平台限制未能在Notebook部署,Tesseract OCR在Colab成功但无法复现。EasyOCR最终在阿里云天池和Colab部署成功,但天池GPU资源不足。建议使用魔搭社区的实例,阿里云提供免费OCR服务。寻求简单OCR项目推荐。附EasyOCR安装和使用代码。
441 2
|
5月前
|
人工智能 并行计算 开发者
CUDA重大更新:原生Python可直接编写高性能GPU程序
NVIDIA在2025年GTC大会上宣布CUDA并行计算平台正式支持原生Python编程,消除了Python开发者进入GPU加速领域的技术壁垒。这一突破通过重新设计CUDA开发模型,引入CUDA Core、cuPyNumeric、NVMath Python等核心组件,实现了Python与GPU加速的深度集成。开发者可直接用Python语法进行高性能并行计算,显著降低门槛,扩展CUDA生态,推动人工智能、科学计算等领域创新。此更新标志着CUDA向更包容的语言生态系统转型,未来还将支持Rust、Julia等语言。
399 3
CUDA重大更新:原生Python可直接编写高性能GPU程序
|
5月前
|
消息中间件 监控 RocketMQ
RocketMQ主题路由信息缺失问题分析
总之,RocketMQ的主题路由信息丢失问题并不复杂。只要我们了解它的原因,合理地使用和维护RocketMQ,就能避免因此带来的影响。希望这个分析对你有所帮助。当然,如果在实际应用中遇到其他问题或者对我的解释有疑问,欢迎进一步提问。
216 26
|
5月前
|
数据挖掘 API 开发者
京东商品详情 API 接口全攻略:从入门到精通
京东商品详情API接口是京东开放平台为开发者提供的服务,用于获取商品详细信息。通过调用接口,开发者可获得商品属性、价格、库存、促销信息等数据,适用于电商应用、价格比较工具及数据分析平台等场景。支持GET/POST请求方式,参数包括API版本、密钥等。示例代码展示了如何使用Python的requests库调用该接口,并获取JSON格式的返回数据,包含商品基本信息、价格、库存和用户评价等内容。
236 16
|
5月前
|
人工智能 计算机视觉 Python
CodeBuddy 实现图片转素描手绘工具
总的来说,这次使用 CodeBuddy 实现图片转素描手绘工具的体验非常棒。它不仅帮我实现了一直想尝试的功能,还让我在开发过程中学习到了很多新知识和技巧。如果你也和我一样,对编程实现有趣的功能感兴趣,又担心自己搞不定复杂的代码,不妨试试 CodeBuddy,相信它会给你带来惊喜!
112 1
|
5月前
|
Oracle Java 关系型数据库
JVM深入原理(一+二):JVM概述和JVM功能
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行。
142 0
|
5月前
|
JavaScript 数据可视化 前端开发
three.js简单实现一个3D三角函数学习理解
1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好的跨平台和跨浏览器兼容性,让用户无需安装任何插件就可以在现代浏览器上观看3D内容。
186 0
|
存储 应用服务中间件 nginx
Docker教程
Docker教程
|
开发者 移动开发 前端开发
WAI-ARIA
【6月更文挑战第2天】WAI-ARIA
220 2
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
314 0
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间