2019独角兽企业重金招聘Python工程师标准>>>

发射倒计时程序:

/*** Created by Administrator on 2017/8/31.*/
public class LiftOff implements Runnable {protected int countDown = 10;private static int taskCount = 0;private final int id = taskCount++;public LiftOff() {}public LiftOff(int countDown) {this.countDown = countDown;}public String status() {return "#" + id + "(" +(countDown > 0 ? countDown : "LiftOff!") + ")";}@Overridepublic void run() {while (countDown-- > 0) {System.out.print(status());Thread.yield();}}}

如何驱动

示例1:

在下面的示例中,这个任务的run()不是由单独的线程驱动的,它是在main()中直接调用的

/*** Created by Administrator on 2017/8/31.*/
public class MainThread {public static void main(String[] args) {LiftOff launch = new LiftOff();launch.run();System.out.println("等待发射\r\n");}
}

输出结果:

总结:当从runnable导出一个类时,它必须具有run()方法,但是这个方法并无特殊之处,它不会产生任何内在的线程能力。要实现线程行为,你必须显式地将一个任务附着到线程上。

示例二:

/*** Created by Administrator on 2017/8/31.*/
public class MainThread {public static void main(String[] args) {/*       LiftOff launch = new LiftOff();launch.run();System.out.println("\r\n等待发射\r\n");*/Thread t = new Thread(new LiftOff());t.start();System.out.println("等待发射!");}
}

输出结果:

总结:将Runnable对象转变为工作任务的传统方式是把它提交给一个Thread构造器,start()起新线程,run在新起线程中启动该任务。

尽管start()看起来是产生了一个对长期运行方法的调用,但是从输出中可以看到,start()迅速地返回了,因为“等待发射!"消息在倒计时完成之前就出现了。实际上,你产生的是对LiftOff.run()的方法调用,并且这个方法还没有完成,但是因为LiftOff.run()是由不同的线程执行的,因此你仍旧可以执行main()线程中的其他操作,因些程序会同时运行2个方法,main()和LiftOff.run()是程序中与其他线程”同时“执行的代码。

示例三:

添加更多的线程

/*** Created by Administrator on 2017/8/31.*/
public class MainThread {public static void main(String[] args) {for (int i = 0; i < 5; i++) {new Thread(new LiftOff()).start();}System.out.print("等待发射\r\n");}
}

输出:每次执行结果不惟一

结论:输出说明不同的任务的执行在线程被换进换出时混在了一起。这种交换是由线程调度器自动控制的。

转载于:https://my.oschina.net/u/560971/blog/1527075

线程入门-使用Thread类相关推荐

  1. Java多线程-线程的创建(Thread类的基本使用)

    文章目录 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线 ...

  2. java 继承thread_java线程-创建线程(继承 Thread 类)

    1.创建线程的方式 线程创建方式是:继承 Thread 类,重写 run 方法.如下:public class Task extends Thread{ @Override public void r ...

  3. Python 批量创建线程及threading.Thread类的常用函数及方法

    在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...

  4. Python入门之——线程threading(Thread类)简介

    几乎所有的操作系统都支持同时运行多个任务,每个任务通常是一个程序,每一个运行中的程序就是一个进程,即进程是应用程序的执行实例.现代的操作系统几乎都支持多进程并发执行.注意,并发和并行是两个概念,并行指 ...

  5. java基础 通过继承Thread类和实现Runnable接口创建线程

    java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...

  6. Thread类源码解读(2)——线程状态及常用方法

    上一篇我们讨论了线程的创建,本篇我们来聊一聊线程的状态转换以及常用的几个比较重要的方法. 本篇依然是通过源码分析来了解这些知识. 本文源码基于jdk1.8 . 阅读完本文,你应当有能力回答以下常见面试 ...

  7. 【高并发】一个工作了7年的朋友去面试竟然被Thread类虐的体无完肤

    前言 最近和一个工作了7年的朋友聊天,他跟我说起了他去XXX公司面试的情况,面试官的一个问题把他打懵了!竟然问他:你经常使用Thread类创建线程,那你看过Thread类的源码吗?Thread类创建线 ...

  8. java线程学习-Thread.currentTread().getName()和this.getName()的区别

    很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发. 线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable ...

  9. Thread类学习(一)

    Thread类API中的英文描述: file:///D:/Java/JDK8/Docs/docs/api/index.html 英语不好,大致的意思是: 线程是程序执行时的线程,java虚拟机(JVM ...

最新文章

  1. 展望下一代语言:Fortress, Chapel or X10(转)
  2. linux怎么修改sftp默认端口,如何在 Linux 系统中如何更改 SFTP 端口
  3. 某班学生有50人会c语言的有40人,《离散数学》期末考试题目及评分标准
  4. Apache Shiro 简介
  5. 【白皮书分享】2021年互联网人才招聘白皮书.pdf(附下载链接)
  6. 你是如何管理你的时间的?-----时间管理与树的遍历
  7. Hyper-V实战:高可用性-配置Hyper-V群集
  8. 西门子plc cpu228 4路模拟量输入 2路模拟量输出
  9. linux服务器如何查看硬盘型号,Linux如何查看硬盘型号和缓存
  10. webview的白屏,和硬件加速
  11. 【论文笔记(2)】图卷积网络介绍 Understanding Convolutions on Graphs
  12. 寒武纪“失速”,是AI芯片行业的阵痛?
  13. 图像评价指标——PSNR、SSIM、FID、KID
  14. TiDB+TiSpark部署--安装,扩缩容及升级操作
  15. ROBOMASTER比赛作品集_邹俊添
  16. 【渝粤教育】国家开放大学2018年秋季 0088-21T保险学概论 参考试题
  17. c语言 前置声明,C语言编程开发前置声明都有哪些作用
  18. 安卓开发之SoundPool播放音效
  19. GDPR is coming!
  20. 解决宝塔安装wordpress无法连接到数据库问题

热门文章

  1. linux 网络编程学习
  2. 8086汇编_除法指令
  3. java 有选择的查询_如何在Java中将准备好的语句用于选择查询?
  4. 编写CGI小结(Java)
  5. 小TIPS:合拼gridview的header
  6. SqlServer 算法 :Nested Loops Join(嵌套连接)
  7. 一道百度前端线上笔试题
  8. cookie和session原理
  9. easyui textbox 设置只读不可编辑状态
  10. BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)