APP下载

Java同步线程模型分析与改进研究

2014-07-28钟健

电脑知识与技术 2014年18期
关键词:改进

钟健

摘要:目前状况下,随着经济的迅速发展以及科学技术水平的不断提高,我国的计算机科学技术取得了较大程度上的发展,为我国国民经济的提高做出重要贡献。众所周知,计算机科学技术的发展与语言编程机制的逐步发展与完善莫不可分。Java语言编程机制便是其中的重要一种,随着它的不断发展与改进,目前状况下它已经在计算机语言中有了十分广泛的运用。该文主要针对Java同步线程模型分析与改进进行研究与分析。

关键词:Java语言编程机制;线程模型;改进

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)18-4178-02

1 Java同步线程模型分析

对于Java语言编程机制而言,当它与同步线程模型进行了一定程度上的结合之后,能够对其系统并发执行程度进行较大幅度的提高,也就是说在原先的编程机制基础之上进一步的发展与提高。之前,在原先的Java编程机制之中存在着一定的弊端与局限性,这些问题的存在阻碍了Java编程机制的进一步发展,然而,自从在Java之中引入了同步线程模型之后,原先所存在的问题就能够得到一定程度上的控制。我们将同步线程模型与多进程模式进行一定程度上的对比分析,发现相比于多进程模式,前者能够发挥出更大的优越性,两者之间的差异性也能很明显的表现出来。两者之间的差异性主要表现在如下几个方面:对于进程而言,它的两个单位之间是相互分开的,而对于线程而言,它的每个执行单元具有一定程度的独立性,从客观的角度来说,实现独立调整已经不是问题,而是成为了一种非常熟练的工作。另一方面,通过技术上进步,各自分派也成为可能,每个进程都可以称之为独立出来的控制流,虽然在一定程度上具有了独立性,但从实质上来看,它并不是可独立拥有资源的基本单位。从这方面来看,在实际的操作当中,能够实现对独立拥有资源的单位频率进行切换,而且操作频率有所降低。进程并发的执行存在着两个十分必要的条件,这两个必要的条件分别害死可拥有资源的独立单位以及可独立调度及分派的基本单位。在传统的操作系统之中,这两项属性得到了切实体现。值得注意的是,总体进程之中,两种属性成为了一种非常坚实的基础,为进程的并发执行提供了强大的动力。还有就是,为了全面提高程序并发执行的有效性,有一部分的操作仍然只能够在系统中进行实时,这些操作主要有创建以及撤销等。对于一项资源的拥有者而言,在资源之中,对于不同的进程而言,它所具有的内存空间堆栈等也存在着一定程度上的差异。基于此,当系统在对这一系列的操作进行执行时,必须将这一情况纳入到考虑范围之内,腾出更大的空间。所以,在对系统进行设置时,对于进程数目的设定要求能够满足相应的标准,在对进程进行切换时也应该控制好次数。也就是说,从这一方面来看,这对进程并发更深层次的发展造成了一定程度上的阻碍作用。然而,对于Java同步线程模式而言,其难点主要集中在如何采取有效措施对并发程序设计中所出现的一系列问题进行合理而有效的解决。

一般情况下,在进行操作的过程之中,可以对线程进行一定程度的联想,将线程当做是程序当中的某个控制流程。如果是从固有系统角度出发,多数情况仅仅会存在和一个程度的控制流程,且这种控制流程具有相应的循环性,因此在原先的操作系统之后总,对于流程的执行职能按部就班,一步一步来完成,这种环境我们可以将之称作为单线程,无疑单线程的执行效率是相对较低的。近几年来,随着科学技术水平的不断进步,在原先的操作系统的基础之上引进了新技术,取得了较大程度上的进步,Java多线程模式便是其中一种典型技术。随着多线程模式的引入,原先的单线程模式也逐步淡出人们的视线。新型的Java多线程模式可以大幅提高执行效率,它不仅可以对程序的执行进行有效的支持,同时又能够对多个控制流程进行流畅操作。

一般情况下,在对Java多线程模式进行操作的过程之中,会出现两条控制线程,且这两条控制线程具有一定的特殊性,这两条控制线程存在于操作程序之中,且两者所执行的任务不同,一条线程的职责是对用户事件进行一定程度上的处理,而另一条线程作用是进行分析运算。值得注意的是,一般情况下处理器仅仅只有一个个时,也就是说线程是难以进行同时处理的,两条线程的执行之间必须存在着一定的空隙,如果其中一条线程正在等待对相关数据进行获取时,则系统就会自动进行线程的切换。正是由于这一原因,在对多线程模式进行引入之后,需要与计算机处理器个数组合。

2 Java同步进程模型改进的尝试

对于Java编程语言而言,从整体角度上来看,线程模型正是其“软肋”,因为Java编程语言中的线程模型与实际情况的适应度较低,而且它所面对的对象相对狭窄,不能做到面面俱到。除此之外,Java语言的优势在于,其线程模型的满意度较高,能够实现很多的功能,减少了客观上的影响。从综合的角度来分析,Java作为一种编程语言,其线程模型仍然存在着诸多的缺陷,这些缺陷的存在阻碍了其进一步的发展。因此,采取有效措施对Java同步进程模型的改进十分重要。

而要想有效解决Java同步线程模型所存在的额缺陷,处理数据死锁是重中之重,就死锁本身来说,它的形成,主要是两个或者是两个以上的线程,互相之间的无限制等待情况,最终结果就是,两个线程都没有办法执行任务,那么这一状态就被称作为死锁状态。在Java同步线程之中,为了应对这一问题,通过对synchronized 关键词进行一定程度上的使用,并在此基础之上实现对于对象的锁操作。当锁操作完成之后,之前所运用的synchronized 关键词语句便能够得到有效的执行,除了以上的阐述之外,语句执行结束后,无论系统判定为正常也好、不正常也好,解锁操作都会自动完成。

一般情况下,对于并发线程而言,它们会对程序中的资源进行一定程度上的竞争,针对这一情况,必须采取措施对程序当中的共享资源进行有效而均衡的分配,从而达到线程在执行程序的过程之中能够对有限的资源进行充分利用的效果。在Java之中,并不存在专门为死锁提供检测的程序。所以,对于Java程序员而言,就必须认真处理死锁的相关程序。一般情况下,对于线程程序而言,很多都是可以对其进行归纳总结的,如果两个或两个以上的线程彼此之间无限期的等待,最终导致两个线程都无法有效的执行任务,从而造成死锁。比如如下程序:endprint

class Printer implements Runnable {

Input input ;

synchronized void print (){

input . write ();

}synchronized void write (){

}public void run (){

print ();

};

}Printer printer;

synchronized void write (){

printer. sendData ();

}public void run (){

write ();

};

}

从以上的编程来看,不难发现,一个对象会对应另一个与其存在一定关联的monitor对象,这个对象的具体作用可以用“守门人”来形容,每次仅仅允许一个synchronized 方法进入,而如果其中的一个synchronized 方法结束之后,monitor就会进行一定程度上的解锁,此时另外一个synchronized方法便可以开始执行。那么应该如何采取有效措施对这一死锁问题进行解决?其实只需要对正确线程程序进行编制,主要策略如下:首先,需要对给定的任务目标进行有效的完成,在执行目标的过程中,需要注意一定的同步性,即与其他任务同时进行,通过这样的操作,可以对每个线程完成的功能进行一定程度上的控制,并在此基础之上,就没有必要对两个线程进行使用,因为在这一操作之后,两者之间就存在着一定的依赖性,当从一个 synchronized 方法中调用另一个 synchronized 方法时,要谨慎方可。

3 结束语

随着计算机技术的逐渐发展,Java语言编程的效果已经越来越明显,将其引入同步线程模型,可以充分改进其中的一些弊端,将大大提高运行效率。

参考文献:

[1] 周志远,张大方,缪力.基于 Java 内存模型的并发程序模型检测[J].计算机工程与科学,2010(3).

[2] 苗康,余啸,赵吉,沈宇.基于关系演算的 Java 模式识别[J].计算机应用研究, 2010(9).

[3] 于利前,王林章,雷斌,赵建华,李宣东.静动态结合的 Java 程序不变性分析方法[J].计算机学报,2010(4).

[4] 喻志虎,邹华,杨放春.Parlay应用服务器的软件容错研究与设计[J].北京邮电大学学报,2004,27(增刊):12-15.

[5] HORSTMANN C S,CORNELL G.Java2核心技术(卷2):高级特性[M].陈昊鹏, 王浩,姚建平,等,译.7版.北京:机械工业出版社,2006.

[6] 柴平渲,龚向阳,程时端.分布式入侵检测技术的研究[J].北京邮电大学学报,2002,25(2):58-62.endprint

猜你喜欢

改进
现代化教学手段在语文教学中的运用
浅析国有企业思想政治工作的改进与创新
“慕课”教学的“八年之痒”