《Java语言》课件第10章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java语言》课件第10章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言 Java 语言 课件 10
- 资源描述:
-
1、第第10章章多线程机制多线程机制 1.1 Java线程的概念线程的概念 1.2 Java多线程编程方法多线程编程方法 1.3 线程的控制线程的控制1.4 线程资源的同步处理线程资源的同步处理1多进程多进程 多进程的缺点:多进程的缺点:进程切换开销大;进程切换开销大;进程间的通信很不方便。进程间的通信很不方便。2多线程多线程 多线程则指的是在单个程序中可以同时运行多个多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务不同的线程,执行不同的任务 线程切换的开销小线程切换的开销小。线程的状态线程的状态Java采用抢占式调度策略采用抢占式调度策略 下面几种情况下,当前线程会放弃下面几
2、种情况下,当前线程会放弃CPU:(1)当前时间片用完;)当前时间片用完;(2)线程在执行时调用了)线程在执行时调用了yield()或或sleep()方法主动放弃;方法主动放弃;(3)进行)进行I/O 访问,等待用户输入,导致线程阻塞;或者为等访问,等待用户输入,导致线程阻塞;或者为等候一个条件变量,线程调用候一个条件变量,线程调用wait()方法;()方法;(4)有高优先级的线程参与调度。)有高优先级的线程参与调度。线程的优先级用数字来表示,范围从线程的优先级用数字来表示,范围从110。主线程。主线程的默认优先级为的默认优先级为5 Thread.MIN_PRIORITY=1 Thread.MA
3、X_PRIORITY=10 Thread.NORM_PRIORITY=5 1、Thread构造方法构造方法 public Thread(ThreadGroup group,Runnable target,String name);public Thread()();public Thread(Runnable target);public Thread(Runnable target,String name););public Thread(String name););public Thread(ThreadGroup group,Runnable target););public Thre
4、ad(ThreadGroup group,String name););2、Thread类的主要方法类的主要方法 方法 功能CurrentThread()返回当前运行的Thread对象 start()启动线程 run()由调度程序调用,当run()方法返回时,该线程停止stop()使调用它的线程立即停止执行sleep(intn)使线程睡眠n毫秒,n毫秒后,线程可以再次运行suspend()使线程挂起,暂停运行Not Runnable resume()恢复挂起的线程,使处于可运行状态Runnable yield()将CPU控制权主动移交到下一个可运行线程2、Thread类的主要方法类的主要方法s
5、etName(String)赋予线程一个名字 getName()取得由setName()方法设置的线程名字的字符串getPriority()返回线程优先级setPriority(int)设置线程优先级join()当前线程等待调用该方法的线程结束后,再往下执行setDaemon(boolean)设置该线程是daemon线程还是用户线程,Daemon线程也称服务线程,通常编成无限循环,在后台持续运行。例例10-1 直接继承直接继承Thread类实现多线程类实现多线程 import java.util.*;class TimePrinter extends Thread int pauseTime;
6、/中间休息时间中间休息时间 String name;/名称标识名称标识 public TimePrinter(int x,String n)pauseTime=x;name=n;例例10-1 直接继承直接继承Thread类实现多线程类实现多线程(续续1)public void run()while(true)try System.out.println(name+:+new Date(System.currentTimeMillis();Thread.sleep(pauseTime);catch(Exception e)System.out.println(e);该方法是静态方法还该方法是静态
7、方法还是实例方法?是实例方法?例例10-1 直接继承直接继承Thread类实现多线程类实现多线程(续续2)static public void main(String args)TimePrinter tp1=new TimePrinter(1000,Fast Guy);tp1.start();TimePrinter tp2=new TimePrinter(3000,Slow Guy);tp2.start();【思考思考】不通过不通过start方法,直接执行方法,直接执行run()方法,会方法,会产生什么问题?产生什么问题?通过实现通过实现Runnable 接口编写多线程应用接口编写多线程应用
8、 通过通过 Thread 类的构造函数类的构造函数public Thread(Runnable target)可可以将一个以将一个Runnable 接口对象传递给线程,线程在调度时将自动接口对象传递给线程,线程在调度时将自动调用调用Runnable 接口对象的接口对象的run方法。方法。public class Thread implements Runnable private Runnable target;public Thread()public Thread(Runnable target).public void run()if(target!=null)target.run();
9、.例例10-2 计数按钮的设计计数按钮的设计 import java.applet.*;import java.awt.*;class countbutton extends Button implements Runnable int count=0;public countbutton(String s)super(s);public void run()while(count10000)try this.setLabel(+count+);Thread.sleep(int)(10000*Math.random();catch(Exception e)public class counta
展开阅读全文