扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
RealtimeThread 类继承了java.lang.Thread类。这个类有多个构造函数,开发者能够调试线程的行为。
public RealtimeThread() public RealtimeThread(SchedulingParameters scheduling) public RealtimeThread(SchedulingParameters scheduling, ReleaseParameters release) |
提供给RealtimeThread(还有MemoryParameters )的构造函数的两个参数ReleaseParameters 和SchedulingParameters使得线程的时间和处理器需求可以通知给系统。RealtimeThread实现了Schedulable接口。关键就在于Schedulable对象可以被放置在ImmortalMemory, HeapMemory, ScopedPhysicalMemory, and PhysicalImmortal等类的实例所表示的内存中。
NoHeapRealtimeThread 是RealtimeThread的一个特有的形式。因为NoHeapRealtimeThread实例可以立刻抢占任何已实现的垃圾收集器,它的run()函数中的逻辑不允许分配或引用任何在堆中分配的对象,或者是对在堆中的对象进行操作。例如,如果A和B是immortal memory中的两个对象。B.p是堆中的一个对象的引用 , A.p和B.p的类型是一致的,那么NoHeapRealtimeThread是不允许执行与下面类似的代码的:
A.p = B.p; B.p = null; |
考虑到这些限制,NoHeapRealtimeThread对象必须被放置在一个内存区域中以防止线程可能unexceptionally的控制实例的变量。这就是为什么NoHeapRealtimeThread的构造函数要求ScopedMemory 或 ImmortalMemory的引用了。当线程启动后,所有的操作都处于分配的内存区域中。因此,new操作产生的所有的内存分配都处于这个区域中。
内存管理
我们已经发现了一些内存相关的类了。更确切的说,MemoryArea 是所有处理可分配的内存区域的类的抽象的基类,这些内存区域包括ImmortalMemory,物理内存和ScopedMemory。HeapMemory类是一个单体(singleton)对象,它允许其他内存区域中的代码在JAVA堆中分配内存。这个方法返回一个对HeapMemory单体实例所代表的JAVA堆的指针。
public static HeapMemory instance() |
ScopedMemory区域连接到特定内存区域,这是一个处理那些指向具有有限生命周期的内存空间的类
RawMemoryAccess实例把一段范围的物理内存当作一个固定顺序的字节。Accessor方法的完整实现将允许通过偏移量来访问物理地址的内容,把它解析成byte,short,int或long数据或者这些类型的数组。如果你需要访问float或是double类型的值,就必须使用RawMemoryFloatAccess类。偏移量是代表high-order 还是 low-order字节取决于RealtimeSystem类中的静态布尔变量BYTE_ORDER的值。一个raw的内存空间当然不能够存储JAVA对象的引用,因为这样一种操作是不安全的。RawMemoryAccess类用下面的构造函数来初始化:
public RawMemoryAccess(JAVA.lang.Object type, long base, long size) throws SecurityException, OffsetOutOfBoundsException, SizeOutOfBoundsException, UnsupportedPhysicalMemoryException, MemoryTypeConflictException, MemoryInUseException |
值得注意的是这个构造函数定义了相当多的可能抛出的异常。Type参数是代表所需内存类型的对象所需要的。它被用于定义初始地址以及控制映射。
结论
实时JAVA提供了一个更可靠和可预测的调度机制,内存处理方法,各种不同的内存模型,一个可预测性更好的线程和同步模型,异步时间处理,以及high-resolution时间处理。这使得可预测的运行成为传统的计算性能测试中所有决定中的第一选择。这就是实时的真谛。
这篇文章只是一个新的概念和Sun的JAVA实现的的综述。如果你对具体的实现细节很感兴趣,你可以在下面的资源中找到很多有用的资料。实时JAVA为JAVA应用程序提供了实时能力,这也使得JAVA有可能成为第一个可用的商业的实时语言。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者