对Java多线程编程技术分析思考.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对Java多线程编程技术分析思考

对Java多线程编程技术分析思考   摘要:本文基于Java多线程编程技术进行了全面而深入地分析和思考,以期促进多线程编程技术在Java语言中的进一步应用,也为同行提供一些有益的参考。   关键词:Java 多线程编程技术 分析思考   中图分类号:TP312.1 文献标识码:A 文章编号:1007-9416(2014)01-0225-01   基于开发性能考虑,多线程明显优于单线程,同时多线程技术的应用需要借助操作系统予以实现[1]。Java语言为多任务并发执行提供了可能,为多线程及其运行环境营造了有利的软件环境。   1 多线程概述   对于计算机而言,其执行的程序又被称作“进程”,每个进程不仅对应一块相对独立的内存空间,同时还对应一组系统资源。就本质而言,所谓进程其实就是程序执行的整个过程。线程是进程的一个组成部分,即某个单一顺序的控制流。多线程技术的应用能够提高开发程序的应用性能,同时也不可避免地提高了程序内部的复杂程度。   2 Java实现多线程的方法   对于Java多线程编程而言,其程序设计方法主要包括两种,一种是继承Thread类,另一种是实现Runnable接口。下文将予以具体介绍。   2.1 继承Thread类   应用该种设计方法时,将线程体设置在run()方法中,具体操作是,创建一个Thread类的对象,然后借助该对象的start()方法以实现消息发送的目的,最终启动线程。应用该方法对多线程进行定义,不仅方便,而且简单,相对容易实现。   2.2 实现Runnable接口   先定义,然后并发执行对象,从而实现Runnable接口,接下来在该对象的帮助下创建所需的线程对象[3]。   通过创建便可实现Runnable接口的对象实例,同时还可以将其用作创建Thread类实例的相关参数。Java语言原本仅能实现单继承,而借助上述方法定义的多线程对象除了可以实现单继承外,还能够继承其他的类,如此一来,便通过间接途径具备了多继承性的功能。   3 线程的交互   1)不同线程执行着各自任务,若任务相互间存在某种内在联系,则须编写相应程序以实现交互的目的。Java的object类基于此向人们提供了3种方法:①wait();②notify();③notifyAll()。当线程执行某对象的wait()方法时,便会提供基于该对象的标记锁,并将之纳入以该对象为标记的等待池中;一个线程执行该对象的notify()方法,然后基于随机原则从等待池中选调一个线程,并将之归入锁池之中;一个线程执行notifyAll()方法[2],能够将该对象对应的那些处于等待状态的线程经由等待池进入锁池。通常情况下,上述三种方法的调用均需被放置在同步代码块中,对Java线程的整个“生命过程”进行总结,归纳出如下状态:1)新建状态。创建线程类子类实例之后,予以初始化,那么这一对象便进入到了新建状态,该情况下,存在与之对应的存储空间以及一系列进程资源;2)就绪状态。前一状态线程被置于就绪状态,具体而言就是,进入就绪队列,静候CPU时间片的到来。该情况下,已经基本具备了运行所需的诸多条件,至于什么时候真正执行,则由两点决定,一个是线程优先级,另外一个是就绪队列所处状态;3)挂起状态。受相关原因影响,运行中的线程自动退出CPU以暂停本身任务的执行,即进入到所谓的挂起状态。当相关原因被有效解决后,方可重新回归到运行状态;4)终止状态。一个线程走完了所有程序,或者被强制结束,便会进入到终止状态。该状态下的线程无法被恢复和重新执行。   4 线程的同步   对于同一进程而言,其涉及的多个线程共同拥有一片存储空间。这种方式虽然较为便利,也留下了访问冲突这一严重隐患。Java语言针对该问题设计了相应的处理机制,从而理想地避开某个数据对象在同一时间点被多个线程访问的弊端。该套机制就是synchronized关键字,共涉及两种用法,一个是synchronized方法,另一个是synchronized块[3]。   以synchronized方法为例。应用该方法可实现对对类成员变量访问的有效控制。每个类实例均有一个与之对应的一把锁,因而任何一个synchronized方法均须获得这个“锁”,才能继续执行,如果所属线程处于阻塞状态,那么方法执行过程中便会独占该锁,直至由此方法返回时方可完成锁的释放,之后处于被阻塞状态的线程才能获得该锁,并再次执行。该机制的应用,使得同一时刻所涉及的各个类实例,其全部声明为synchronized的成员函数中最多允许一个被执行,如此一来,有效防止了类成员变量访问冲突这一矛盾。在Java中,除类实例之外,每一个类也全都对应着一把锁,所以,可以将类的静态成员函数进行synchronized声明,从而实现

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档