对Java多线程编程技术的分析思考_第1页
对Java多线程编程技术的分析思考_第2页
对Java多线程编程技术的分析思考_第3页
对Java多线程编程技术的分析思考_第4页
对Java多线程编程技术的分析思考_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论