清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第15章 线程

第15章 线程 线程入门 同步化议题 concurrent套件新增类别
第15章 • 线程 – 线程入门 – 同步化议题 – concurrent套件新增类别

继 THRead 继承 java. lang. Thread类别,并重新定义 run方法 实例化您自定义的 Thread类另 °使用 start0方法后动线程
继承Thread • 继承java.lang.Thread类别,并重新定义 run()方法 • 实例化您自定义的Thread类别 • 使用start()方法启动线程

继承 Thread public class Eraser Threadextends Thread i private boolean activei private string maski //重新定义run()方法 public void run ( while (isactiveo) i System. out.print(mask)i try i //暂停目前的线程50毫秒 Thread currentThread().sleep(50) catch(InterruptedException e) t e printstackTrace()i
继承Thread public class EraserThreadextends Thread { private boolean active; private String mask; … //重新定义run()方法 public void run () { while(isActive()) { System.out.print(mask); try { //暂停目前的线程50毫秒 Thread.currentThread().sleep(50); } catch(InterruptedException e) { e.printStackTrace(); } } } }

继 Thread //后动 Eraser线程 EraserThread eraserThread new EraserThread('#')i eraserThread. start()i String password scannernext()i eraserThread. setActive(false) 在 Java se6中可以使用 System. console 来取得 Java.O. Console物件 使用 Console物件的 read Password(Q方法 就可以避免输人的密码被窥视的问题
继承Thread //启动Eraser线程 EraserThread eraserThread = new EraserThread('#'); eraserThread.start(); String password = scanner.next(); eraserThread.setActive(false); • 在Java SE 6中可以使用System.console() 来取得java.io.Console物件 • 使用Console物件的readPassword()方法, 就可以避免输入的密码被窥视的问题

实作 Runnable.界面 如果您的类别经要继承某个类别,那 您就不能继承 Thread类别 继承了 Thread类别,您就不能再继承其它 类别 实侑 java. lang. Runnable接口来定义具线程 功能的类别 Runnable接口中定义一个run0方法要实作 在实例化一个 Thread对象时,可以传入 实作 Runnable接口的对象作为自变量
实作Runnable界面 • 如果您的类别已经要继承某个类别,那么 您就不能继承Thread类别 • 继承了Thread类别,您就不能再继承其它 类别 • 实作java.lang.Runnable接口来定义具线程 功能的类别 • Runnable接口中定义一个run()方法要实作 • 在实例化一个Thread对象时,可以传入一 个实作Runnable接口的对象作为自变量

实作 Runnable.界面 public class EraserimplementsRunnable //SE1FRunnable private boolean active private string maski //重新定义run()方法 public void run ()i while (isactiveo) System. out. print(mask) try //暂停目前的线程50毫秒 Thread currentThread().sleep(50)i catch(InterruptedException e)t e printstackTrace()i
实作Runnable界面 public class EraserimplementsRunnable { //实作Runnable private boolean active; private String mask; … //重新定义run()方法 public void run () { while(isActive()) { System.out.print(mask); try { //暂停目前的线程50毫秒 Thread.currentThread().sleep(50); } catch(InterruptedException e) { e.printStackTrace(); } } } }

实作 Runnable.界面 // Eraser实作 Runnable界面 Eraser eraser new eraser(#i)i //后动 Eraser线程 Thread eraser Thread new Thread (eraser)i eraserThread. start oi String password scanner next()i eraser. setActive(false)i
实作Runnable界面 //Eraser实作Runnable界面 Eraser eraser = new Eraser('#'); //启动Eraser线程 Thread eraserThread = new Thread(eraser); eraserThread.start(); String password = scanner.next(); eraser.setActive(false);

Daemon线程 个 Daemon线程是一个在背景执行服务的 线程 如果所有的 Daemon的线程都结束了,则 Daemon线程自动就会终止 从Main方法开始的是一个非 Daemon线程 如果希望某个线程在产生它的线程结束后 跟着终止’要捋它设为 Daemon线程
Daemon线程 • 一个Daemon线程是一个在背景执行服务的 线程 • 如果所有的非Daemon的线程都结束了,则 Daemon线程自动就会终止 • 从Main方法开始的是一个非Daemon线程 • 如果希望某个线程在产生它的线程结束后 跟着终止,要将它设为Daemon线程

Daemon线程 使用 setDaemono方法来设定一个线程是否 为 Daemon线程 预设所有从 Daemon线程产生的线程也是 Daemon线程 Thread thread new Thread //这是匿名类别的写法 new Runnable( public void run( while(true System. out. print("T) //设定为 Daemon线程 thread. setDaemon( true) thread. startoi
Daemon线程 Thread thread = new Thread( //这是匿名类别的写法 new Runnable() { public void run() { while(true) { System.out.print("T"); } } }); //设定为Daemon线程 thread.setDaemon(true); thread.start(); • 使用setDaemon()方法来设定一个线程是否 为Daemon线程 • 预设所有从Daemon线程产生的线程也是 Daemon线程

线程生命周期 执行 start0之后,线程进入 Runnable状态 此时线程尚未真正开始执行 ·必须等待排班器( Scheduler)的排班 Dead new Thread Unblocked Blocked Blocked事件 run()執行完畢 執行 start) Runnable Running 排班器
线程生命周期 • 执行start()之后,线程进入Runnable状态, 此时线程尚未真正开始执行 • 必须等待排班器(Scheduler)的排班
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第14章 输入、输出.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第13章 对象容器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第12章 泛型(Generics).ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第11章 枚举类型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第10章 例外处理.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第9章 管理类别档案.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第8章 继承、多型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第7章 封装.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第6章 字串.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第5章 数组.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第4章 从autoboxing、unboxing认识对象.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第3章 语法入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第2章 入门准备.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第1章 了解Java.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第1章 oracle数据库概述.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第16章 基于Oracle数据库的应用开发.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第15章 PLSQL程序设计.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第14章 SQL语言基础.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第13章 网络管理.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第12章 数据库备份与恢复.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第16章 反射.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第17章 Annotation.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第18章 舍遗补缺.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第19章 文本编辑器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第20章 JDBC入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第21章 Java SE6新功能简介.ppt
- 《C语言程序设计》课程教学资源(PPT课件)PPT课件 第五章 数组.ppt
- 南开大学:《上机试习题集—二级C语言程序设计》PDF电子书(编程和改错各100例).pdf
- 《Flash动画设计教程》PPT教学课件(共五章).ppt
- 陕西科学技术出版社:《计算机基础实用教程》PDF电子书(共六章).pdf
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 系统设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论(主讲:郑莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十三章 MFC库与Windows程序开发概述.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt