- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java语言程序设计 shelly200607@126.com 第15章 Java中的线程 Thread的子类创建线程 使用Runable接口 线程的常用方法 GUI线程 线程同步 在同步方法中使用wait()、notify 和notifyAll()方法 挂起、恢复和终止线程 计时器线程Timer 线程联合 守护线程 线程的概念 人们常说做事情要一心一意,不能三心二意。 在现实世界中,其实很多事情可以并发执行的。比如,人体在接受外界信息时,视觉、嗅觉、听觉、味觉、触觉这些感知器官统统都是并发执行的。所谓眼观六路、耳听八方。 随着科学技术的发展,计算机也进入了三心二意的时代。大家在使用计算机的时候,可以同时运行两个甚至两个以上的程序:比如一边听歌、一边上网看新闻,还可以同时下载电影。 线程的概念 那么计算机中怎样才可以实现多个程序的同时运行呢? 虽然,在计算机中这些程序似乎同时在运行,但事实并非如此。 除非你的计算机上装有两个 CPU (双核处理器),否则同一时刻只能运行一个程序。 线程的概念 如果 CPU 只有一个,这时就遇到这样的问题,到底怎样才能既听歌又能看网页呢? 操作系统的进程并发机制可以帮助我们实现这一目的。 实际情况是由操作系统负责管理 CPU 等硬件资源的分配,通过采用时间片原理,以非常小的时间间隔交替执行多个程序。 因此,给我们大家一种多个程序被同时执行的错觉,即并发执行。 我们把支持并发执行的操作系统称为多任务操作系统。 操作系统不仅要管理计算机的各个硬件资源(例如CPU)的分配,还要管理软件的执行。 操作系统对于程序的管理是通过这样一种方式,即为每个程序都建立一个进程,然后通过对进程进行管理从而间接的管理程序。 每个进程又可以进一步细分成多个线程,多线程意味着一个程序的多行语句同时执行。 程序员可以在程序中加入多线程,每个线程完成程序的一部分功能,并可以和其他线程并发执行。 例如,我们在网上在线看电影,一般不需要等到电影下载完才观看,而是一边下载,一边看。这时就启动了两个线程,一个线程用来下载,另一个用来播放已经下载的数据。 15.1 Java中的线程 程序是为完成特定任务、用某种语言编写的一组指令的集合。是一段静态的代码。 进程是程序的一次执行过程,是系统进行调度和资源分配的一个独立单位。是动态的概念。 线程是比进程更小一级的执行单元。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。 每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。 进程与多线程 进程是正在运行的一个程序。 程序:静态对象 进程:动态过程。 操作系统会为每个进程分配一段内存空间, 包括:代码、数据以及堆栈等资源。 多线程是指在进程内部同时存在几个执行体,按几条不同的执行线索共同工作。 线程不能独立存在,必须存在于进程内部,多线程之间共享该进程的内存。 进程之间并发执行,而多线程则实现了进程内部的并发。 每个Java程序都有一个缺省的主线程。 Java应用程序总是从主类的main方法开始执行。当JVM加载代码,发现main方法之后,就会启动一个线程,这个线程称作“主线程”,该线程负责执行main方法。那么,在main方法的执行中再创建的线程,就称为程序中的其它线程。如果main方法中没有创建其他的线程,那么当main方法执行完最后一个语句,即main方法返回时,JVM就会结束我们的Java应用程序。如果main方法中又创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CPU资源,main方法即使执行完最后的语句,JVM也不会结束我们的程序,JVM一直要等到程序中的所有线程都结束之后,才结束我们的Java应用程序 2.线程的状态与生命周期 新建 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。(此时还没有开始排队等候,需使用start()) 运行 线程创建之后就具备了运行的条件,一旦轮到它来享用CPU资源时,即JVM将CPU使用权切换给该线程时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了(即run方法执行的过程)。 中断 有4种原因的中断:CPU资源从当前线程切换给其他线程、执行了sleep(int millsecond)方法、执行了wait()方法、进入阻塞状态 。 死亡 run方法结束 。 即释放了线程对象的内存。 两种情况:自然死亡,和强制死亡。 线程的各种状态 例1 public class Example15_1 { public static void m
文档评论(0)