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语言编写圣诞表白程序