在Java中创建一个线程有两种方法:继承Thread类和实现Runnable接口。

下面通过两个例子来分析两者的区别:

1)继承Thread类

public class TestThread extends Thread {int count = 3;public TestThread(String ThreadName) {super(ThreadName);}@Overridepublic void run() {for (int i = 0; i < 10; i++)if (count > 0) {System.out.println(Thread.currentThread().getName() + "--->" + count);count--;}}public static void main(String[] args) {//new三个线程并启动new TestThread("线程一").start();new TestThread("线程二").start();new TestThread("线程三").start();}
}

输出结果:

线程一--->3
线程一--->2
线程一--->1
线程二--->3
线程二--->2
线程二--->1
线程三--->3
线程三--->2
线程三--->1

2)实现Runnable接口

同样跟继承Thread的代码:

public class TestThread implements Runnable {int count = 3;public TestThread() {}@Overridepublic void run() {for (int i = 0; i < 10; i++)if (count > 0) {System.out.println(Thread.currentThread().getName() + "--->" + count);count--;}}public static void main(String[] args) {TestThread tr = new TestThread();//new三个线程并启动同一个Runnablenew Thread(tr, "线程一").start();new Thread(tr, "线程二").start();new Thread(tr, "线程三").start();}
}

输出结果:

线程一--->3
线程一--->2
线程一--->1

可以发现两种新建线程的方式最后的输出结果不一样,是因为在继承Thread类中,同时创建了三个线程,每个线程都执行一个任务,相当于三个线程分别各自进行三次循环打印log;而在第二种实现Runnable接口中是创建三个Thread共同去执行tr这个Runnable,相当于三个Thread共同去执行这一个循环,使得最后count只循环了一次,剩余线程二和线程三都因为使用同一个count导致未能打印出来。

结论:

1)两种创建线程的实现方式不一样,一个通过继承一个通过实现接口,在Java中如果已经继承了其他的父类,那么只能实现接口来创建线程。

2)通过上面的例子可以看到继承Thread,每个线程都独立拥有一个对象,而实现Runnable对象,多个线程共享一个Runnable实例。

转载于:https://www.cnblogs.com/kma-3/p/7065470.html

java创建线程的两种方法区别相关推荐

  1. java创建线程的两种方法是_java创建线程的两种方法

    要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...

  2. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  3. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  4. java创建数组的两种方法

    java创建数组的两种方法 1,静态初始化 int[] array={1,2,3,4,5}; 2,动态初始化 1)先分配空间再给数组元素赋值 int[] array=new int[10]; //需指 ...

  5. java创建线程的两种方式及区别

    本文将介绍创建线程的两种方式,示例代码在下面,复制粘贴即可 继承Thread类方式和实现Runnable接口方式 区别:由于在开发的过程中,很多的类都会用到继承的方式,如果采用继承的方式会让各个类之间 ...

  6. java创建线程的四种方法

    第一种:  通过继承Thread类创建线程 第二种: 通过实现Runnable接口创建线程 这两种早已烂记于心,这里就不作过多的介绍, 主要介绍其源码 Thread类 implements Runna ...

  7. Java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  8. Java创建线程的两个方法

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  9. java for循环创建线程_Java创建线程的两种方法

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...

最新文章

  1. (C++)A+B 输入输出练习V 输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。
  2. DayDayUp:博主,在此,祝愿大家(十五种编程语言输出),2019年春节快乐!猪年诸事大吉!学要有所成,劳要有所获!
  3. duilib基本布局学习(模仿百度网盘)及绑定按钮事件
  4. flutter开发之必须掌握的dart知识点:list,set,map
  5. arduinowifi.send怎么获取响应_Vue3.0 响应式原理 (一)
  6. 扫掠两条引导线_《神都夜行录》周年庆点燃线上线下,解读国风二次元IP的成长之路...
  7. 互联网为什么要版权,我支持资源共享。
  8. Java中解决(extjs或jquery)session过期退出登录问题
  9. eclipse必备的15的个快捷键
  10. 软件设计师中级考试,软考
  11. nginx 配置静态网页
  12. 怎么进入服务器修改跳转域名,域名怎么跳转到别的网站
  13. 仙剑奇侠传3 全开注册表改法
  14. Tumblr营销大法(二)
  15. 脱机运行scp linux,解决CentOS使用不了scp命令
  16. 一个大二学生从屌丝开始的逆袭
  17. 研究生如何进行文献的搜索和参考文献信息的搜寻
  18. “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
  19. /dev/null 21 详解
  20. 计算机协会宣传部长的英语,升达浪潮计算机协会

热门文章

  1. Visual Studio 快捷键
  2. html语言中 加当前时间,javascript中怎么获取当前时间?
  3. linux测试nvme性能,使用Python测试NVMe吞吐量
  4. linux脚本控制,linux控制脚本
  5. android中怎么网络判断,Android中判断网络是否连接实例详解
  6. flowmap怎么做_Photoshop生成的流动贴图(flowmap)
  7. r 语言计算欧氏距离_一文搞懂常用R语言统计值计算:打倒描述性统计拦路虎
  8. java随机点名器的思路_Java实现简单的随机点名器
  9. Python知识点6——函数
  10. 进程、线程、多线程、并发、并行学习记录