您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 对Java多线程编程技术的分析思考
对Java多线程编程技术的分析思考摘要:本文基于Java多线程编程技术进行了全面而深入地分析和思考,以期促进多线程编程技术在Java语言中的进一步应用,也为同行提供一些有益的参考。关键词:Java多线程编程技术分析思考中图分类号:TP312.1文献标识码:A文章编号:1007-9416(2014)01-0225-01基于开发性能考虑,多线程明显优于单线程,同时多线程技术的应用需要借助操作系统予以实现[1]。Java语言为多任务并发执行提供了可能,为多线程及其运行环境营造了有利的软件环境。1多线程概述对于计算机而言,其执行的程序又被称作“进程”,每个进程不仅对应一块相对独立的内存空间,同时还对应一组系统资源。就本质而言,所谓进程其实就是程序执行的整个过程。线程是进程的一个组成部分,即某个单一顺序的控制流。多线程技术的应用能够提高开发程序的应用性能,同时也不可避免地提高了程序内部的复杂程度。2Java实现多线程的方法对于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声明,从而实现对对类的静态成员变量访问的有效控制。Synchronized方法也存在一定的不足:如果将某个大的方法进行synchronized声明处理,那么将会严重制约运行效率,较为典型的案例有,将线程类的方法run()声明为synchronized,由于它在线程所有运行环节中一直处于运行状态,所以,造成其对本类任何synchronized方法所施加的调用命令均不执行。5结语大量运用实践表明,在编程领域,Java多线程编程技术具有极大的应用价值和潜力,将会发展成为一种主流的编程技术,所以,对其进行研究并予以掌握具有相当积极的现实意义。参考文献[1]吴金秀.Java多线程编程技术的研究[J].网络与信息,2009,05:40.[2]谢进军.Java多线程技术在考试系统中的应用[J].电子制作,2013,15:76.[3]耿金秀.Java多线程技术在网络通信系统中的实际运用思路研究[J].电子技术与软件工程,2013,24:65.
本文标题:对Java多线程编程技术的分析思考
链接地址:https://www.777doc.com/doc-1793993 .html