java 多线程Thread与runnable的区别
发布时间 - 2026-01-11 02:52:01 点击率:次java 多线程Thread与runnable的区别

java中实现多线程的方法有两种:继承Thread类和实现runnable接口
1,继承Thread类,重写父类run()方法
public class thread1 extends Thread {
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("我是线程"+this.getId());
}
}
public static void main(String[] args) {
thread1 th1 = new thread1();
thread1 th2 = new thread1();
th1.run();
th2.run();
}
}
run()方法只是普通的方法,是顺序执行的,即th1.run()执行完成后才执行th2.run(),这样写只用一个主线程。多线程就失去了意义,所以应该用start()方法来启动线程,start()方法会自动调用run()方法。上述代码改为:
public class thread1 extends Thread {
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println("我是线程"+this.getId());
}
}
public static void main(String[] args) {
thread1 th1 = new thread1();
thread1 th2 = new thread1();
th1.start();
th2.start();
}
}
通过start()方法启动一个新的线程。这样不管th1.start()调用的run()方法是否执行完,都继续执行th2.start()如果下面有别的代码也同样不需要等待th2.start()执行完成,而继续执行。(输出的线程id是无规则交替输出的)
2,实现runnable接口
public class thread2 implements Runnable {
public String ThreadName;
public thread2(String tName){
ThreadName = tName;
}
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println(ThreadName);
}
}
public static void main(String[] args) {
thread2 th1 = new thread2("线程A");
thread2 th2 = new thread2("Thread-B");
th1.run();
th2.run();
}
}
和Thread的run方法一样Runnable的run只是普通方法,在main方法中th2.run()必须等待th1.run()执行完成后才能执行,程序只用一个线程。要多线程的目的,也要通过Thread的start()方法(runnable是没有start方法)。上述代码修改为:
public class thread2 implements Runnable {
public String ThreadName;
public thread2(String tName){
ThreadName = tName;
}
public void run() {
for (int i = 0; i < 10000; i++) {
System.out.println(ThreadName);
}
}
public static void main(String[] args) {
thread2 th1 = new thread2("线程A");
thread2 th2 = new thread2("Thread-B");
Thread myth1 = new Thread(th1);
Thread myth2 = new Thread(th2);
myth1.start();
myth2.start();
}
}
总结:实现java多线程的2种方式,runable是接口,thread是类,runnable只提供一个run方法,建议使用runable实现 java多线程,不管如何,最终都需要通过thread.start()来使线程处于可运行状态。
以上就是关于java多线程的实例详解,如有疑问请留言或者到本站社区交流讨论,本站关于线程的文章还有很多,希望大家搜索查阅,大家共同进步!
# java
# 多线程
# 多线程thread和runnable的对比
# Java多线程ThreadPoolExecutor详解
# Java中使用Thread类和Runnable接口实现多线程的区别
# Java多线程Thread类的使用及注意事项
# Java超详细讲解多线程中的Process与Thread
# Java多线程 ThreadLocal原理解析
# Java多线程ThreadAPI详细介绍
# Java使用Thread创建多线程并启动操作示例
# java多线程Thread的实现方法代码详解
# Java多线程Thread类的使用详解
# 我是
# 也要
# 不需要
# 如有
# 希望大家
# 重写
# 要多
# 有两种
# 只提供
# 后才
# 还有很多
# 方法来
# 应该用
# 共同进步
# 疑问请
# 法会
# 失去了
# 运行状态
# 完成后
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows Hello人脸识别突然无法使用
焦点电影公司作品,电影焦点结局是什么?
详解vue.js组件化开发实践
java获取注册ip实例
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
黑客如何利用漏洞与弱口令入侵网站服务器?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
实例解析angularjs的filter过滤器
如何利用DOS批处理实现定时关机操作详解
网站页面设计需要考虑到这些问题
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
浅析上传头像示例及其注意事项
Laravel如何使用withoutEvents方法临时禁用模型事件
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Android中AutoCompleteTextView自动提示
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
网站制作软件有哪些,制图软件有哪些?
如何用VPS主机快速搭建个人网站?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Android利用动画实现背景逐渐变暗
如何用腾讯建站主机快速创建免费网站?
如何在建站之星绑定自定义域名?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何用虚拟主机快速搭建网站?详细步骤解析
如何基于云服务器快速搭建网站及云盘系统?
如何在万网利用已有域名快速建站?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
如何用PHP快速搭建CMS系统?
重庆市网站制作公司,重庆招聘网站哪个好?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
成都网站制作公司哪家好,四川省职工服务网是做什么用?
JavaScript如何实现错误处理_try...catch如何捕获异常?
教你用AI润色文章,让你的文字表达更专业
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
香港服务器部署网站为何提示未备案?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
使用C语言编写圣诞表白程序

