继承Thread

public class Demo2_Thread {public static void main(String[] args) {MyThread mt = new MyThread();mt.start();  // 注意调用的start()方法,而不是run()方法for(int i = 0; i < 1000; ++i)System.out.println("222");}
}class MyThread extends Thread{    // 继承Thread类@Overridepublic void run() {          // 重写run方法for(int i = 0; i < 1000; ++i)    // 将将要执行的代码写到run方法中System.out.println("1111111111");}
}

实现Runnable接口

public class Demo3_Thread {public static void main(String[] args) {new Thread(new MyRunnable()).start();for(int i = 0; i < 1000; ++i)System.out.println("bb");}}class MyRunnable implements Runnable{@Overridepublic void run() {for(int i = 0; i < 1000; ++i)System.out.println("aaaaaaaaaaaaaaaaa");}}

两种方式的区别

查看源码的区别:
1、继承Thread:由于子类重写父类的run(),当调用start()时,直接找子类的run()方法
2、实现Runnable接口:Thread的构造函数中传入了Runnable引用,成员变量记住它,start()调用Thread中的run()方法时,判断成员变量Runnable的引用是否为空,不为空则在Thread的run()方法中调用Runnable的run()方法。编译看Runnable的run(),运行看子类run()方法。
继承Thread:(首选这个,如果有了父类就用接口)
好处是:直接使用Thread类中的方法,代码简单
弊端是:如果已经有了父类,就不能使用这种方法
实现Runnable接口:
好处是:即使自己定义的线程类有了父类也没有关系,因为有了父类也可以实现接口,而接口是可以多实现的
弊端是:不能直接使用Thread类中的方法,需要先获取到线程对象后,才能得到Thread的方法,代码复杂

多线程实现的两种方式及其区别相关推荐

  1. vue 路由传参 params 与 query两种方式的区别(转载)

    vue 路由传参 params 与 query两种方式的区别 初学vue的时候,不知道如何在方法中跳转界面并传参,百度过后,了解到两种方式,params 与 query.然后,错误就这么来了:  ro ...

  2. java两种绑定方式_Javascript绑定事件的两种方式的区别

    命名函数 function check(){ //code } 匿名函数 window.onload = function(){ //先获取元素对象,再绑定事件,绑定的是匿名函数不可重用 var bt ...

  3. vue 路由传参 params 与 query两种方式的区别

    vue 路由传参 params 与 query两种方式的区别 初学vue的时候,不知道如何在方法中跳转界面并传参,百度过后,了解到两种方式,params 与 query.然后,错误就这么来了:  ro ...

  4. Qt实现多线程编程的两种方式

    Qt实现多线程编程的两种方式 方式一: 继承自QThread类,覆写run函数.此实现方法只有run函数内的代码是运行在子线程内. 代码示例: #ifndef QDEMOTHREAD_H #defin ...

  5. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别

    前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...

  6. 递归函数两种方式的区别

    概述 递归函数都不陌生,比如计算n的阶乘: function f($n){if($n <= 1) return 1;return $n * f($n-1); } 当然,有人可能会这么写: fun ...

  7. MySQL 清空表数据的两种方式和区别

    在MySQL中删除数据有两种方式:truncate table 表名.delete from 表名. 它们在以下方面存在区别: 执行效率 truncate不扫描表,相当于重新创建了表,只保留了表的结构 ...

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

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

  9. python: 多线程实现的两种方式及让多条命令并发执行

    一 概念介绍 Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading. ...

最新文章

  1. iOS UIImageView 加载含有汉字的url处理方法
  2. POJ-1321-棋盘问题(深搜)
  3. nginx 开启gzip 配置js_前端性能优化之缓存与GZIP
  4. 信息隐藏将txt文件合并到jpg文件中_使用Kali Linux在图像内隐藏机密消息—可在任何Linux发行版使用
  5. window.print 点击取消后再次打印无效_教程 | 图书馆自助复印打印机使用方法
  6. eclipse(jee) 配置Tomcat
  7. FCKeditor上传漏洞总结
  8. 随想录(thread类的编写)
  9. 第四十二章 SQL函数 DATEADD
  10. 研究svg编辑器过程中遇到的问题总结
  11. windows启动管理器_把windows 10装进文件里,竟然也能启动
  12. python 合并word并生成目录_使用Python制作WORD报告
  13. 24个基本指标精粹讲解(2)--KDJ
  14. Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告
  15. 艾美捷-临床数量排名前20的药物靶点分析-磷酸二酯酶(PDEs)抗体
  16. Html网页制作图片选择
  17. Verizon将基于从英特尔收购的技术打造新款机顶盒
  18. 打印机虚拟服务器,FinePrint_服务器版虚拟打印机程序 V6.13 Server 英文版
  19. 百度地图 由起点和终点 获取中间路线的坐标集
  20. 如何高效阅读技术论文

热门文章

  1. 8.2018年全网最全面的社群赚钱操作指南
  2. Big Data(七)MapReduce计算框架(PPT截图)
  3. linux(Ubuntu)下的wifi热点安装配置------hostapd-2.0
  4. 人工智能——RNN手写字体识别
  5. php开发环境 gent,植物科学常用数据库和生物信息学工具 2020正式版
  6. 虚拟数字人,站在微博的聚光灯下
  7. 修改mysql初始密码
  8. VanBlog: 一款简洁实用优雅的高性能个人博客系统
  9. CISSP复习笔记-第6章 通信与网络安全
  10. Algebra:Chapter 0 - 目录