Java2实用教程课件(第3版第9章)

Java2实用教程课件(第3版第9章)

ID:44230744

大小:85.50 KB

页数:17页

时间:2019-10-19

Java2实用教程课件(第3版第9章)_第1页
Java2实用教程课件(第3版第9章)_第2页
Java2实用教程课件(第3版第9章)_第3页
Java2实用教程课件(第3版第9章)_第4页
Java2实用教程课件(第3版第9章)_第5页
资源描述:

《Java2实用教程课件(第3版第9章)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java2实用教程(第3版)教学课件主讲人:杨云帆第9章Java多线程机制9.1Java中的线程9.2Thread的子类创建线程9.3使用Runable接口9.4线程的常用方法9.6线程同步9.7在同步方法中使用wait()、notify和notifyAll()方法9.8挂起、恢复和终止线程9.1Java中的线程程序是静态的代码。进程是程序的一次动态执行过程。线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程,每个线程也是一个产生、存在和消亡的动态过程。Java的多线程:在一个CPU时间片内

2、,若干个java线程轮流切换执行。当JVM加载代码,发现main方法之后,就会启动“主线程”,该线程负责执行main方法。在main方法的执行过程中可创建其它线程。如果main方法中没有创建其它线程,那么当main方法执行完最后一个语句,JVM就会结束Java应用程序。如果main方法中又创建了其它线程,那么JVM就要在主线程和其它线程之间轮流切换,保证每个线程都有机会使用CPU资源,,直到程序中的所有线程都结束,JVM才结束Java应用程序。2.线程的生命周期例子9.1新建启动运行中断死亡用Thread类或

3、其子类声明并创建线程对象时,线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。线程创建后仅仅是占有了内存资源,在JVM管理的线程中还没有这个线程,此线程必须调用start()方法通知JVM又有一个新线程排队等候切换了。当JVM将CPU使用权切换给该线程时,此线程就可以脱离主线程独立运行(即执行run方法)。有4种原因中断线程:CPU资源从当前线程切换给其他线程、执行了sleep(intmillsecond)方法、执行了wait()方法、进入阻塞状态。run方法结束9.2用Thread类的子类创建线

4、程对象Thread类的子类需要重写父类的run方法,目的是定义线程的具体操作,否则线程就什么也不做,因为父类的run方法中没有任何操作语句。如果线程对象是Thread子类创建的,当JVM将CPU使用权切换给线程时,线程对象立刻调用所属类的run方法执行。classAAextendsThread{publicvoidrun(){…}//重写run()方法}classBBextendsThread{publicvoidrun(){…}//重写run()方法}publicclassAB{publicstaticvo

5、idmain(Stringargs[]){AAaa=newAA();BBbb=newBB();aa.start();bb.start();}}例子9.29.3用Thread类创建线程对象Java.lang包中有Thread类和Runnable接口,Runnable接口中定义了接口方法run();Thread类的构造方法:Thread(Runnabletarget)参数是一个Runnable接口,因此,在创建线程对象时必须向构造方法的参数传递一个实现Runnable接口的类的实例对象,该实例称作线程的目标对象。

6、当线程调用start()方法排队后,一旦轮到它享用CPU资源,线程的目标对象就会自动调用所属类实现的接口方法run。interfaceRunnable{voidrun();…}查API文档classRRimplementsRunnable{intm;publicvoidrun(){…}//类实现的接口方法}publicclassAB{publicstaticvoidmain(Stringargs[]){RRrr=newRR();Threadaa=newThread(rr);Threadbb=newThread

7、(rr);aa.start();bb.start();}}目标对象rr的成员变量m成为线程aa,bb共享的数据单元例子9.39.4线程对象的常用方法1.start()线程对象调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。2.run()Thread类中,run()方法没有具体内容,所以用户程序需要创建自己的Thread类的子类,并重写run()方法来覆盖原来的run()方法。当run方法执行完毕,线程就变成死亡状态。Runnab

8、le接口中的的run()方法,必须被创建目标对象的类实现。3.sleep(intmillsecond)线程运行期间,调用sleep方法放弃CPU资源,休眠一段时间。休眠时间的长短由sleep方法的参数决定,millsecond是毫秒为单位的休眠时间。如果线程在休眠时被打断,JVM就抛出InterruptedException异常。因此,必须在try~catch语句块中调用sleep方法。4.isAl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。