全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java中继承thread类与实现Runnable接口的比较

Java中线程的创建有两种方式: 

1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中

2.  通过实现Runnable接口,实例化Thread类

    在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果。

package com.threadtest; 
class MyThread extends Thread{ 
   
  private int ticket = 10; 
  private String name; 
  public MyThread(String name){ 
    this.name =name; 
  } 
   
  public void run(){ 
    for(int i =0;i<500;i++){ 
      if(this.ticket>0){ 
        System.out.println(this.name+"卖票---->"+(this.ticket--)); 
      } 
    } 
  } 
} 
public class ThreadDemo { 
 
   
  public static void main(String[] args) { 
    MyThread mt1= new MyThread("一号窗口"); 
    MyThread mt2= new MyThread("二号窗口"); 
    MyThread mt3= new MyThread("三号窗口"); 
    mt1.start(); 
    mt2.start(); 
    mt3.start(); 
  } 
 
} 

运行结果如下:

一号窗口卖票---->10 
一号窗口卖票---->9 
二号窗口卖票---->10 
一号窗口卖票---->8 
一号窗口卖票---->7 
一号窗口卖票---->6 
三号窗口卖票---->10 
一号窗口卖票---->5 
一号窗口卖票---->4 
一号窗口卖票---->3 
一号窗口卖票---->2 
一号窗口卖票---->1 
二号窗口卖票---->9 
二号窗口卖票---->8 
三号窗口卖票---->9 
三号窗口卖票---->8 
三号窗口卖票---->7 
三号窗口卖票---->6 
三号窗口卖票---->5 
三号窗口卖票---->4 
三号窗口卖票---->3 
三号窗口卖票---->2 
三号窗口卖票---->1 
二号窗口卖票---->7 
二号窗口卖票---->6 
二号窗口卖票---->5 
二号窗口卖票---->4 
二号窗口卖票---->3 
二号窗口卖票---->2 
二号窗口卖票---->1 

 通过实现Runnable接口的代码如下: 

package com.threadtest; 
class MyThread1 implements Runnable{ 
  private int ticket =10; 
  private String name; 
  public void run(){ 
    for(int i =0;i<500;i++){ 
      if(this.ticket>0){ 
        System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--)); 
      } 
    } 
  } 
} 
public class RunnableDemo { 
 
   
  public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    //设计三个线程 
     MyThread1 mt = new MyThread1(); 
     Thread t1 = new Thread(mt,"一号窗口"); 
     Thread t2 = new Thread(mt,"二号窗口"); 
     Thread t3 = new Thread(mt,"三号窗口"); 
//     MyThread1 mt2 = new MyThread1(); 
//     MyThread1 mt3 = new MyThread1(); 
     t1.start(); 
     t2.start(); 
     t3.start(); 
  } 
 
} 
 

运行结果如下:

一号窗口卖票---->10 
三号窗口卖票---->9 
三号窗口卖票---->7 
三号窗口卖票---->5 
三号窗口卖票---->4 
三号窗口卖票---->3 
三号窗口卖票---->2 
三号窗口卖票---->1 
一号窗口卖票---->8 
二号窗口卖票---->6 

     为什么会出现这种结果呐。我们不妨做个比喻,其实刚的程序,

继承Thread类的,我们相当于拿出三件事即三个卖票10张的任务分别分给三个窗口,他们各做各的事各卖各的票各完成各的任务,因为MyThread继承Thread类,所以在new MyThread的时候在创建三个对象的同时创建了三个线程;

实现Runnable的, 相当于是拿出一个卖票10张得任务给三个人去共同完成,new MyThread相当于创建一个任务,然后实例化三个Thread,创建三个线程即安排三个窗口去执行。    

用图表示如下:

    在我们刚接触的时候可能会迷糊继承Thread类和实现Runnable接口实现多线程,其实在接触后我们会发现这完全是两个不同的实现多线程,一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务。    

    其实在实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。      

    大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类(Thread)创建子类。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # thread类与实现Runnable接口 


相关文章: 网站制作多少钱一个,建一个论坛网站大约需要多少钱?  家具网站制作软件,家具厂怎么跑业务?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  黑客如何利用漏洞与弱口令入侵网站服务器?  如何注册花生壳免费域名并搭建个人网站?  如何通过虚拟主机快速完成网站搭建?  专业网站建设制作报价,网页设计制作要考什么证?  如何快速搭建高效WAP手机网站?  设计网站制作公司有哪些,制作网页教程?  如何彻底卸载建站之星软件?  建站主机选择指南:服务器配置与SEO优化实战技巧  动图在线制作网站有哪些,滑动动图图集怎么做?  制作网站的模板软件,网站怎么建设?  建站主机是否等同于虚拟主机?  如何获取开源自助建站系统免费下载链接?  专业公司网站制作公司,用什么语言做企业网站比较好?  如何选择高性价比服务器搭建个人网站?  如何在IIS7中新建站点?详细步骤解析  如何在景安服务器上快速搭建个人网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站之星代理如何获取技术支持?  python的本地网站制作,如何创建本地站点?  如何快速搭建安全的FTP站点?  制作农业网站的软件,比较好的农业网站推荐一下?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  活动邀请函制作网站有哪些,活动邀请函文案?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  平台云上自主建站:模板化设计与智能工具打造高效网站  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  建站主机选购指南:核心配置优化与品牌推荐方案  C++用Dijkstra(迪杰斯特拉)算法求最短路径  定制建站方案优化指南:企业官网开发与建站费用解析  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  建站主机选哪家性价比最高?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何在IIS管理器中快速创建并配置网站?  建站之星24小时客服电话如何获取?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  装修招标网站设计制作流程,装修招标流程?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何快速搭建高效简练网站?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  南京网站制作费用,南京远驱官方网站?  XML的“混合内容”是什么 怎么用DTD或XSD定义  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何在云服务器上快速搭建个人网站?  网站制作难吗安全吗,做一个网站需要多久时间?  重庆网站制作公司哪家好,重庆中考招生办官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。