|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。由Sun的BrianGoetz和RobertEckstein互助撰写的有关Java和及时体系的文章比来刊登在Sun开辟者收集上,该系列文章由两部分构成。
该系列第一部分先容了及时程序计划的观点,及其与Java的干系,并形貌了使用尺度Java运转时体系创立及时使用的停滞:
- 操纵体系成绩:调剂提早、时钟精度较低。
- 线程优先级成绩:不成靠的线程优先级包管和优先级颠倒。
- 类加载提早。
- 渣滓接纳提早。
- 使用程序代码不切合及时请求。
- 体系中存在别的优先级较高的举动。
作者随后先容了RTSJ——Java及时标准(Real-TimeSpecificationforJava)。RTSJ与现在的JSR1有所分歧,从2002年最后的可用版本问世至今,已过一系列保护版本。文章形貌了及时标准对线程做出的改动:在一个真实的及时情况中,线程优先级是极为主要的,没有一个体系能够包管,一切的义务都可以定时完成。但是,一个及时体系可以确保的是,当有些义务行将凌驾终极时限时,能够先就义低优先级的义务来保证它的实行。
RTSJ界说了最少28种优先权级别,并请求严厉实行此划定。但是,正如本篇文章后面所说,RTSJ的完成依附于撑持多种优先权的及时操纵体系,和高优先级线程抢占低优先级线程的才能。 Goetz和Eckstein接着提到Java及时体系标准的中心观点——及时线程:别的,RTSJ可同意非及时和及时举动同时存在于一个Java使用中,对一个举动的时序包管水平依附于举动所属线程范例:java.lang.Thread或javax.realtime.RealtimeThread线程范例。
- 尺度java.lang.Thread(JLT)线程用来撑持非及时的举动。JLT线程能够使用Thread类界说的10种优先权级别,可是它们不合用于及时举动,由于不克不及够供应时序实行包管。
- RTSJ还界说了javax.realtime.RealtimeThread(RTT)线程范例。RTTs能够使用RTSJ供应的壮大的线程优先权撑持,它的调剂遵守运转直至堵塞(run-to-block)准绳,而非定时间片运转准绳。这就意味着,当有别的具有较高优先权的RTT呈现时,调剂程序会抢占该RTT。
第一部分讲到的最初一个观点是,撑持内存办理所做的各类扩大。因为与渣滓接纳及对象分派相干的提早的存在,三个内存地区被分别出来:
- 尺度堆(Standardheap)——与尺度Java中的内存办理相似。
- 永世内存(Immortalmemory)——必需由软件显式开释的内存。
- 感化域内存(Scopedmemory)——具有不一连性命周期的内存,有流动巨细。
引进RealtimeThread的扩大类——NoHeapRealtimeThread,以及时友爱的体例帮助办理这些共同的内存地区:RTSJ供应一个RTT的子类,称为NoHeapRealtimeThread(NHRT)。该子类得实例能够制止由渣滓接纳引发的不不乱情形。这个NHRT类是为硬及时(hard-real-time)举动所筹办的。
为最年夜化可展望性,NHRTs不克不及会见渣滓接纳堆,也不克不及利用堆变量。不然,线程会遭受GC停息,这将招致义务错过运转时限。与此相反的是,NHRT能够更具展望性的体例利用感化域内存和永世内存特征分派内存。 但是,即便软件正在利用特定的内存地区,它的资本利用仍然很简单遭到内存别的非关头部分的GC的影响。因为这个缘故原由,该系列文章的第二部分会合于和渣滓接纳相干的成绩,论述了可用于及时Java体系的分歧GC办法,然后先容了Sun的贸易及时Java体系:JavaRTS。在第二部分中形貌了四种渣滓接纳算法:
- 基于事情的GC(Work-BasedGC)——接纳由对象分派触发。
- 基于工夫的GC(Time-BasedGC)——接纳经由过程尺度的工夫箱规定界线。
- Henriksson"sGC——在关头和非关头线程之间有所区分的基于事情的GC(Work-basedGC)。
- JavaRTSReal-TimeGC(RTGC)——能够用在JavaRTS中,加倍天真/细粒度的Henriksson"sGC的扩大。
现在可用的及时体系有良多,SunJavaRTS和IBMWebsphereRT都是服从RTSJ的及时体系平台。能够选择的另有OracleWeblogicRealTime,它是创建于尺度Java的工具集,对RTSJ体系还不具有一切牢靠性包管,但在流动工夫界限内仍是能够供应一个更具展望性的体系。
检察原文:Two-PartSeriesonReal-TimeJava
来自:http://www.infoq.com/cn/news/2008/08/realtime_java
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|