- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线程是JAVA的高级部分,我们的重点是理解JAVA中线程的概念,原理为今后的的学习高级部分,以及面试做准备。然后是多线程的实现方式以及简单的启动,停止线程方法,为游戏做准备。
多任务处理:
什么是多任务呢?多任务就是几个任务同时运行。在我们上网的时候,即可以聊天,也可以听音乐,也可以浏览网页。这就是多任务。它有个特点:就是在一个任务还没有做完的的时候,又去做另外的任务。
在程序里的多任务处理是怎么样的呢?它也是指在同一个时候执行多个任务,它不必等到某个任务执行完之后,再去做其他的任务。CPU在处理的时候,先是执行一个任务的一段代码,然后接着执行另一个任务的一段代码。交替执行直到任务结束。
现实生活中这样的例子是很多的。如:有个柜台只有一个营业员。这时候来了二个顾客。那么这个营业员应该怎么样去应对呢?她问第一个顾客要买什么商品,然后把商品给第一个顾客看;在第一个顾客看的时候,又去问第二个顾客要买什么商品,然后把商品给第二个顾客看。在第二个顾客看时候,又去问第一个顾客对商品满不满意。如果顾客说再看看,那么营业员又去问第二个顾客满不满意。如果第二个顾客说满意,营业员就叫顾客付款,然后结束第二个顾客的营业任务,然后再去问第一个顾客满不满意。如果第一个顾客也满意付款。那么整个任务就结束了。
多任务处理的2种类型:
?多任务处理有两种类型:- 基于进程- 基于线程
?进程是指一种“自包容”的运行程序,有自己的地址空间;
当我们打开windows任务管理器的时候,就有一个进程的选项卡。在这个选项卡里,我们可以发现有很多当前计算机正在运行的应用程序。这些正在运行的每一个应用程序都叫一个进程。它们都会占用一定的内存,都有自己的地址空间。
?基于进程的特点是允许计算机同时运行两个或更多的程序。
在JAVA中是可以启动一个进程的。就是说通过JAVA代码,我们可以打开另一个应用程序
代码示例:
//创建一个操作系统进程,用指定的的应用程序去打开指定的文件
ProcessBuilder process=new ProcessBuilder(
C:/WINDOWS/NOTEPAD.EXE,//应用程序地址
c:/2.txt);//文件地址
try {
process.start();//启动进程
} catch (IOException e) {
e.printStackTrace();
}
在上面的示例中,我们是开启了一个进程,用指定地址的应用程序(这里是记事本),去打开指定的文件(这里是C盘下的2.txt)
线程
和多进程不同,什么是多线程呢?线程是进程内部单一的一个顺序控制流。
?基于线程所需的开销更少
–在多任务中,各个进程需要分配它们自己独立的地址空间
–多个线程可共享相同的地址空间并且共同分享同一个进程
网站是个很典型的多任务处理的例子,当不同的用户同时去访问一个网站时,网站就需要进行多任务处理。以前使用CGI(通用网关接口技术),CGI是一个多进程的技术,当一个用户去访问网站时,是开启一个进程,这样的话,当有多个用户同时访问时,那么就得开启多个进程。每一个进程都有自己独立的地址空间,所以这样的网站内存很快就消耗掉了。不但可连接的用户少,而且很容易受到恶意攻击。在JAVA里,采用的servlet技术,是一个基于多线程的技术,共享同一个进程,共享相同的地址空间,这样的话,当有多个用户同时访问时,性能不会下降多少。
?进程间调用涉及的开销比线程间通信多
?线程间的切换成本比进程间切换成本低
那么什么又是单线程,什么又是多线程呢?
代码示例:
public static void main(String[] args){
a();
b();
c();
}
代码执行的顺序图如下:
在上面的例子里,大家可以看出,在main方法里执行时,必须要等到a()方法执行完了之后,才能执行b()方法。b()方法执行完以后才能执行C()方法。这样在等到一个方法执行完以后再执行另一个方法的模式叫单线程。我以前用到的程序大部分都是单线程的。
那么多线程是怎么一回事呢?
在上面的例子,可以看出,多线程是多个方法同时执行,在a()方法执行时,同时执行b()方法,换句话说,b()方法不必等到a()方法执行完以后再去执行。这就是多线程。就是说在一个程序中,同时有多个执行路径存在。
《西游记》里孙语空去打妖精,这时候他一个人去打三个妖精,它要把一个妖精打死之后,才能去打第二个妖精,第二个妖精打死之后,再打第三个妖精。这时候它是单线程的。一个打妖精很累,它就拔三根毫毛,变成三个小孙悟空,一个小孙悟空打一个妖精,就是说它不必等到第一个妖精打死之后再去打第二个妖精,而是同时去打。这就
您可能关注的文档
- 《2015年农险合规要点培训》新员工培训课件.ppt
- 《near-field scanning optical microscopy》细胞成像技术小组展示.ppt
- 《PALM光激活定位显微技术》细胞成像技术小组展示.pptx
- 《Rebuild Of East-Hall》建筑精品课件.ppt
- 《STochastic Optical Reconstruction Microscopy》细胞成像技术小组展示.pptx
- 《STED技术介绍》细胞成像技术小组展示.pptx
- 《Renovation of East Hall》建筑精品课件.pptx
- 《保险经营》新员工培训课件.pptx
- 《保险基础知识》新员工培训课件.ppt
- 《Super-resolution Microscopy》细胞成像技术小组展示.pptx
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)