- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 多线程
;学习目标:;第11章 多线程;11.1程序、进程与线程; 程序是存放在磁盘上的一系列代码和数据的执行映像,是一个静止的实体;进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位,是一个执行中的程序,它是动态的实体;线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。;1. 进程与线程区别与联系
1)划分尺度:线程更小,所以多线程程序并发性更高。? ??
2)资源分配:进程是资源分配的基本单位,同一进程内多个线程共享其资源。
3)地址空间:进程拥有独立的地址空间,同一进程内多个线程共享其资源。?
4)处理器调度:线程是处理器调度的基本单位。?
5)执行:每个线程都有一个程序运行的入口,顺序执行序列和程序的出口,但线程不能单独执行,必须组成进程,一个进程至少有一个主线程。简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
;2.进程和程序区别及联系
(1)进程和程序区别
1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。
2)进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程,可以用进程控制块来唯一地标识每个进程。而这一点正是程序无法做到的,由于程序没有和数据产生直接的联系,既使是执行不同的数据的程序,他们指令的集合依然是一样的,所以无法唯一地标识出这些运行于不同数据集上的程序。
3)进程还具有并发性和交往性,这也与程序的封闭性不同。
;(2)进程和程序联系
1)进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
2)一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程(因为它没有执行),也有可能有多个进程与之对应(运行在几个不同的数据集上)。
3) 进程和线程都是由操作???统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
; 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。?如图11-1所示。
;
图11-1 进程、线程和应用程序之间的关系
简而言之,一个程序至少有一个进程,一个进程至少有一个线程,线程的划分尺度小于进程,使得多线程程序的并发性高。
;11.2多线程; 先从多任务谈起。多任务就是能同时运行两个或两个以上的程序,而且这些程序似乎在同时运行。比如,一边上网浏览网页一边看视频。这时计算机同时完成了两个任务。注意,计算机只有一个CPU,实际上是不能同时完成两个或两个以上程序的。计算机在完成一项任务时,CPU还有很多时间是空闲着的。操作系统正是将CPU的空闲部分分配给其他程序,从而给人的印象是在同时完成几项任务。
; 多线程通过把多任务的原理用到程序的更低一层中,进一步发展了这一原理。在多线程程序中,单个程序似乎能同时执行多个任务。每个任务通常被称为一个线程(thread),能同时运行一个以上线程的程序为多线程程序。
;11.2.1构建Thread子类对象; 完成线程真正功能的代码放在类的run()方法中,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程的代码写入run()方法中,然后同时调用Thread类中的start()方法执行线程,也就是调用run()方法。
;Thread对象需要一个任务来执行,任务是指线程在启动时执行的工作,该工作的功能代码被写在run()方法中。这个run()方法必须使用如下语法格式:
; 当执行一个线程程序时,就自动产生一个线程,主方法正是在这个线程上运行的。当不再启动其他线程时,该程序就为单线程程序,主方法线程启动由Java虚拟机负责,程序员负责启动自己的线程。语法如下:
;【例11-1】 从Thread类派生线程举例。
解题思路:在下面的代码中,类printingThread扩展了Thread类。
代码:程序threads.java
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class threads extends Applet implements ActionListen
原创力文档


文档评论(0)