Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt

Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt

ID:50324862

大小:1.10 MB

页数:29页

时间:2020-03-08

Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt_第1页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt_第2页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt_第3页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt_第4页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt_第5页
资源描述:

《Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第16章 多线程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章要求:第16章多线程了解多线程在Windows操作系统的执行模式掌握实现线程的两种方式掌握线程的状态掌握使线程进入各种状态的方法掌握线程的优先级掌握线程安全掌握线程同步机制掌握线程间的通信主要内容1、线程简介2、实现线程的两种方法3、线程的生命周期4、操作线程的方法5、线程的优先级6、线程同步7、线程间的通信第16章多线程16.1线程简介世间万物会同时完成很多工作,例如人体同时进行呼吸、血液循环、思考问题等活动,用户既可以使用计算机听歌,也可以使用它打印文件,而这些活动完全可以同时进行,这种思想放在J

2、ava中被称为并发,而将并发完成的每一件事情称为线程。在人们的生活中,并发机制非常重要,但是并不是所有的程序语言都支持线程。在以往的程序中,多以一个任务完成后再进行下一个项目的模式进行开发,这样下一个任务的开始必须等待前一个任务的结束。Java语言提供并发机制,程序员可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。多线程是非常复杂的机制,如果此时读者不能体会这句话的含义,可以理解为同时阅读3本书,首先阅读第1本书第1章,然后再阅读第2本书第1章,再阅读第3本书

3、第1章,回过头再阅读第1本书第2章,依次类推,不用很长时间读者就可以体会多线程的复杂性。既然多线程这样复杂,那么它在操作系统中是怎样工作的呢?其实Java中的多线程在每个操作系统中的运行方式也存在差异,在此着重说明多线程在Windows操作系统的运行模式。Windows操作系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程,也就是正在执行的程序。系统可以分配给每个进程一段有限的使用CPU的时间(也可以称为CPU时间片),CPU在这段时间中执行某个进程,然

4、后下一个时间片又跳至另一个进程中去执行。由于CPU转换较快,所以使得每个进程好像是同时执行一样。图16-1表明了Windows操作系统的执行模式。一个线程则是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线程。在单线程中,程序代码按调用顺序依次往下执行,如果需要一个进程同时完成多段代码的操作,就需要产生多线程。16.2实现线程的两种方式16.2.1继承Thread类16.2.2实现Runnable接口Thread类是java.

5、lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread实例。Thread类中常用的两个构造方法如下:publicThread(StringthreadName);publicThread();其中第一个构造方法是创建一个名称为threadName的线程对象。继承Thread类创建一个新的线程的语法如下:publicclassThreadTestextendsThread{//...}完成线程真正功能的代码放在类的run()方法中,当一个类继承Thread类后,就可以

6、在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread类中的start()方法执行线程,也就是调用run()方法。16.2.1继承Thread类Thread对象需要一个任务来执行,任务是指线程在启动时执行的工作,该工作的功能代码被写在run()方法中。这个run()方法必须使用如下这种语法格式:publicvoidrun(){//...}注意:如果start()方法调用一个已经启动的线程,系统将抛出IllegalThreadStateException异常。当执行

7、一个线程程序时,就自动产生一个线程,主方法正是在这个线程上运行的。当不再启动其他线程时,该程序就为单线程程序,比如在本章以前的程序都是单线程程序。main()方法线程启动由Java虚拟机负责,程序员负责启动自己的线程。语法如下:publicstaticvoidmain(String[]args){newThreadTest().start();}到目前为止,线程都是通过扩展Thread类来创建的,如果程序员需要继承其他类(非Thread类)并使该程序可以使用线程,就需要使用Runnable接口。例如,一个

8、扩展JFrame类的GUI程序不可能再继承Thread类,因为Java语言中不支持多继承,这时该类就需要实现Runnable接口使其具有使用线程的功能。实现Runnable接口的语法如下:publicclassThreadextendsObjectimplementsRunnable16.2.2实现Runnable接口实现Runnable接口的程序会创建一个Thread对象,并将Runnable对象与Thread对象相关联。T

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

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

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