文学学习课件.pptx
《文学学习课件.pptx》由会员分享,可在线阅读,更多相关《文学学习课件.pptx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java的多线程机制1主要内容线程的概念线程的生命周期Java中多线程的编程继承Thread类与使用Runnable接口Thread类的主要方法线程的同步与死锁动画第1页/共37页Java的多线程机制2基本概念之一:进程进程是正在运行的一个程序程序:静态对象进程:动态过程操作系统为每个进程分配一段内存空间,包括:代码、数据以及堆栈等资源多任务的操作系统(OS)中,进程切换对CPU资源消耗较大第2页/共37页Java的多线程机制3基本概念之二:多线程单线程多线程进程传统进程多线程进程第3页/共37页Java的多线程机制4基本概念之二:多线程线程是比进程更小一级的执行单元线程不能独立存在,必须存在
2、于进程中,各线程间共享进程空间的数据线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweight process)。第4页/共37页Java的多线程机制5线程的调度调度策略时间片抢占式:高优先级的线程抢占CPU Java的调度方法同优先级线程组成先进先出队列,使用时间片策略对高优先级,使用优先调度的抢占式策略 12第5页/共37页Java的多线程机制6线程的生命周期新创建运行状态阻塞状态死亡状态start()start()new()new()sleep()sleep()睡眠时间到等待I/OI/OI/OI/O完成wait()wait()notify()notify()notif
3、yAll()notifyAll()对象锁定锁释放异常退出runrun方法退出第6页/共37页Java的多线程机制7线程的生命周期(续)Newborn:线程已创建,但尚未执行Runnable:(就绪)线程已被调度,按优先级和先到先服务原则在队列中排队等待CPU时间片资源Runnnig:正在运行Blocked:(阻塞)因某事件或睡眠而被暂时性地挂起Dead:正常/强行中断,退出运行状态第7页/共37页Java的多线程机制8Java对多线程的支持提供用户级的多线程支持Thread类start(),stop(),run()Runnable 接口实现多线程的两种编程方法继承 Thread 类实现 Run
4、nable 接口第8页/共37页Java的多线程机制9方法之一:继承Thread类Thread类的重要方法:run()定义线程的具体操作系统调度此线程时自动执行初始时无具体操作内容如何编程呢?继承Thread类,定义 run()方法第9页/共37页Java的多线程机制10Easy?Lets try it!小例子:SimpleThread.javaTwoThreadsTest.java第10页/共37页Java的多线程机制11public class SimpleThread extends Thread public SimpleThread(String str)super(str);/创建
5、具以str为名字的线程 public void run()/定义run()方法 for(int i=0;i 10;i+)System.out.println(i+getName();try /休眠一段时间 sleep(int)(Math.random()*1000);catch(InterruptedException e)System.out.println(DONE!+getName();/SimpleThread.javapublic class TwoThreadsTest public static void main(String args)new SimpleThread(Tak
6、e it myself?).start();new SimpleThread(Give it to police!).start();/TwoThreadsTest.java第11页/共37页Java的多线程机制12Thread类java.lang包构造函数Thread();无参数Thread(String threadname);指定线程实例名线程的优先级控制三个常量:MAX(10),MIN(1),NORM_PRIORITY(5)getPriopty(),setPriopty(int nP)线程创建时继承父线程的优先级第12页/共37页Java的多线程机制13Thread类的有关方法star
7、t():由Newborn到Runnable启动线程run():线程在被调度时执行的操作sleep(指定时间):令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队产生例外InterruptedException用try块调用sleep(),用catch块处理例外第13页/共37页Java的多线程机制14Thread类的有关方法(续)suspend():挂起线程,处于阻塞状态resume():恢复挂起的线程,重新进入就绪队列排队应用:可控制某线程的暂停与继续方法:设一状态变量suspendStatus=false(初始)暂停:if(!suspendStatus)T
8、.suspend();suspendStatus=true;继续:if(suspendStatus)T.resume();suspendStatus=false;第14页/共37页Java的多线程机制15Thread类的有关方法(续)yield():对正在执行的线程若就绪队列中有与当前线程同优先级的排队线程,则当前线程让出CPU控制权,移到队尾若队列中没有同优先级的线程,忽略此方法stop()强制线程生命期结束isAlive():返回boolean,表明是否还存在第15页/共37页Java的多线程机制16Thread类方法总结启动线程:start()有关线程执行的控制:stop()、suspe
9、nd()、resume()有关调度控制Thread.sleep(10);/低优先级的线程也可以获得执行Thread.yield();/同优先级的线程可以获得执行suspend();/暂停本线程第16页/共37页Java的多线程机制17方法之二:RunnableRunnable接口任何线程类都必须要实现的一个接口,Thread类也不例外run()方法方法二:自定义类实现Runnable接口自定义类实现Runnable接口使用Thread类的另一构造函数:Thread(Runnable,String)使用start()启动线程第17页/共37页Java的多线程机制18方法之二:Runnable(续
10、)例:class A implements Runnablepublic void run().class B public static void main(String arg)Runnable a=new A();Thread t=new Thread(a);t.start();第18页/共37页Java的多线程机制19方法之二:Runnable(续)两种方法的选择当需要从其他类,如Applet类继承时,使用Runnable当编写简单的程序时,可考虑使用继承Thread类例:RaceApplet.java具体运行结果(线程调度)与平台有关第19页/共37页Java的多线程机制20publ
11、ic class Runner extends Thread /赛跑者线程类 public int tick=1;public void run()while(tick 40000000)tick+;/Runner.java/RaceApplet是一个实现了多线程的Appletpublic class RaceApplet extends Applet implements Runnable final static int NUMRUNNERS=2;/定义赛跑线程的个数 final static int SPACING=20;/声明两个赛跑线程 Runner runners=new Runn
12、erNUMRUNNERS;/声明一个画图线程 Thread updateThread=null;第20页/共37页Java的多线程机制21 public void init()/重载Applet的init()方法 for(int i=0;i NUMRUNNERS;i+)runnersi=new Runner();/创建赛跑线程线程 runnersi.setPriority(i+1);/设优先级first=1,second=2 if(updateThread=null)/创建绘图线程,并设优先级为3 updateThread=new Thread(this,Thread Race);update
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文学 学习 课件
限制150内