欢迎来到天天文库
浏览记录
ID:40056257
大小:188.50 KB
页数:37页
时间:2019-07-18
《《文学sdsad》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java的多线程机制9主要内容线程的概念线程的生命周期Java中多线程的编程继承Thread类与使用Runnable接口Thread类的主要方法线程的同步与死锁动画2Java的多线程机制基本概念之一:进程进程是正在运行的一个程序程序:静态对象--进程:动态过程操作系统为每个进程分配一段内存空间,包括:代码、数据以及堆栈等资源多任务的操作系统(OS)中,进程切换对CPU资源消耗较大3Java的多线程机制基本概念之二:多线程单线程多线程进程传统进程多线程进程4Java的多线程机制基本概念之二:多线程线程是比进程更小一级的执行单元线程不能独立存在,必
2、须存在于进程中,各线程间共享进程空间的数据线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweightprocess)。5Java的多线程机制线程的调度调度策略时间片抢占式:高优先级的线程抢占CPUJava的调度方法同优先级线程组成先进先出队列,使用时间片策略对高优先级,使用优先调度的抢占式策略126Java的多线程机制线程的生命周期新创建运行状态阻塞状态死亡状态start()new()sleep()睡眠时间到等待I/OI/O完成wait()notify()notifyAll()对象锁定锁释放异常退出run方法退出7Java的
3、多线程机制线程的生命周期(续)Newborn:线程已创建,但尚未执行Runnable:(就绪)线程已被调度,按优先级和先到先服务原则在队列中排队等待CPU时间片资源Runnnig:正在运行Blocked:(阻塞)因某事件或睡眠而被暂时性地挂起Dead:正常/强行中断,退出运行状态8Java的多线程机制Java对多线程的支持提供用户级的多线程支持Thread类start(),stop(),run()Runnable接口实现多线程的两种编程方法继承Thread类实现Runnable接口9Java的多线程机制方法之一:继承Thread类Thread类
4、的重要方法:run()定义线程的具体操作系统调度此线程时自动执行初始时无具体操作内容如何编程呢?-继承Thread类,定义run()方法10Java的多线程机制Easy?Let’stryit!小例子:SimpleThread.javaTwoThreadsTest.java11Java的多线程机制publicclassSimpleThreadextendsThread{publicSimpleThread(Stringstr){super(str);}//创建具以str为名字的线程publicvoidrun(){//定义run()方法for(in
5、ti=0;i<10;i++){System.out.println(i+""+getName());try{//休眠一段时间sleep((int)(Math.random()*1000));}catch(InterruptedExceptione){}}System.out.println("DONE!"+getName());}}//SimpleThread.javapublicclassTwoThreadsTest{publicstaticvoidmain(String[]args){newSimpleThread("Takeitmysel
6、f??").start();newSimpleThread("Giveittopolice!!").start();}}//TwoThreadsTest.java12Java的多线程机制Thread类java.lang包构造函数Thread();无参数Thread(Stringthreadname);指定线程实例名线程的优先级控制三个常量:MAX(10),MIN(1),NORM_PRIORITY(5)getPriopty(),setPriopty(intnP)线程创建时继承父线程的优先级13Java的多线程机制Thread类的有关方法start
7、():由Newborn到Runnable启动线程run():线程在被调度时执行的操作sleep(指定时间):令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队产生例外InterruptedException用try块调用sleep(),用catch块处理例外14Java的多线程机制Thread类的有关方法(续)suspend():挂起线程,处于阻塞状态resume():恢复挂起的线程,重新进入就绪队列排队应用:可控制某线程的暂停与继续方法:设一状态变量suspendStatus=false(初始)暂停:if(!
8、suspendStatus){T.suspend();suspendStatus=true;}继续:if(suspendStatus){T.resum
此文档下载收益归作者所有