JAVA基础知识点-线程知识点.docVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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()方法执行完以后再去执行。这就是多线程。就是说在一个程序中,同时有多个执行路径存在。 《西游记》里孙语空去打妖精,这时候他一个人去打三个妖精,它要把一个妖精打死之后,才能去打第二个妖精,第二个妖精打死之后,再打第三个妖精。这时候它是单线程的。一个打妖精很累,它就拔三根毫毛,变成三个小孙悟空,一个小孙悟空打一个妖精,就是说它不必等到第一个妖精打死之后再去打第二个妖精,而是同时去打。这就

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档