原委
利用
乐观的并发控制在共享内存的粒度上,所构建的高层的同步控制机制就称作Software Transactional Memory(STM)。
命名渊源起于:
【1】Transactional是指乐观的并发控制中所需要提供的事务回滚特性。而基于锁的并发控制在获得所有所需锁之前只会Block,一旦获得所有锁开始操作之后是不需要回滚的(除非出现死锁)。
【2】首先由Tom Knight在1986年提出的Hardware Transactional Memory,随后由Nir Shavit和Dan Touitou在1995年提出了完全在软件层面实现的Transactional Memory。
STM从2005年开始成为流行的热点。
优点1:性能高
理论上,最坏情况下,n个并发任务的执行时间空间复杂度都为O(n),具体的复杂度也依赖实现细节。性能通常会比基于锁的机制要好。
优点2:概念简洁
基于锁的同步机制暴露给对于高层程序员的概念抽象不太友好,久为诟病的点包括:
- 需要设计并发段
- 需要设计防死锁机制
- 需要设计抢占机制,否则就有可能造成高优先级任务饥饿
缺点
在事务commit的时候如果发现Read Buffer中有旧版本数据则需要回滚事务。事务的可回滚特性使得无法进行回滚的操作无法在STM中直接实现,例如:I/O。
分享到:
相关推荐
Java Instrumentation 和 Javaassist 是两种在 Java 应用程序中实现动态代码修改和增强的关键工具。RASP(Runtime Application Self-Protection)是一种安全技术,它允许应用程序在运行时检测和防御潜在的攻击。在这...
Java Instrumentation框架是一种用于在运行时修改和分析Java应用程序的技术。这个"A Java Instrumentation Framework.zip"文件可能包含了一个实现此功能的开源项目,名为"ja-netfilter-master",它可能是该项目的源...
在深入探讨基于java Instrumentation技术的数据采集探针验证之前,让我们先了解一下一些核心概念和技术背景。Java Instrumentation是Java语言提供的一个功能,它允许开发者在Java虚拟机(JVM)加载类之前或之后对类...
### Java Instrumentation 深入理解 #### 一、引言 Java Instrumentation 是 Java 平台的一个强大特性,允许开发者在不修改源代码的情况下,动态地修改正在运行的 Java 应用程序的行为。这一特性最早出现在 Java SE...
反射提供的功能,能在运行时(动态)的 ...Instrumentation是Java提供的一个来自JVM的接口,该接口提供了一系列查看和操作Java类定义的方法,例如修改类的字节码、向classLoader的classpath下加入jar文件等。
•• ••适用于Java的OpenTelemetry Instrumentation关于该项目提供了Java代理JAR,该Java代理JAR可以附加到任何Java 8+应用程序,并动态注入字节码以捕获来自许多流行的库和框架的遥测。 您可以采用多种格式导出...
**OpenTelemetry-Java-Instrumentation 源码解析** OpenTelemetry 是一个开放源代码项目,用于收集、处理和导出应用性能监控数据。它提供了标准的 API、SDK 和工具,使得开发者能够轻松地在各种语言环境中实现...
This paper describes JSpy, a system for high-level instrumentation of Java bytecode and its use with JPaX, our system for runtime analysis of Java programs. JPaX monitors the execution of temporal ...
EclipseLink对Prometheus Java Instrumentation库的支持 这是Prometheus Java工具库的EclipseLink导出器。 它遵循与Prometheus Java Instrumentation库的Hibernate导出器相同的模式。 此导出器可用于从一个或多个...
1. **编写Java Agent**:首先,我们需要创建一个实现了`java.lang.instrument.Instrumentation`接口的Java Agent。这个Agent需要包含`premain`或`agentmain`方法,用于接收Instrumentation实例,并在此基础上进行类...
学习Android有一段时间了,虽然前段时间对软件测试有了...在这篇文章中,我将介绍Instrumentation这种测试方法,那么什么是Instrumentation?Instrumentation和Activity有点类似,只不过Activity是需要一个界面的,而
本文将详细讲解如何实现对Instrumentation的Hook,以达到控制应用程序执行流程的目的。 首先,理解Instrumentation在Android系统中的作用至关重要。Instrumentation是Android提供的一组API,用于在应用组件(如...
java8流源码CS474 - 课程项目 团队成员 迈特雷伊·拉贾戈帕兰 雪莉·马修·乔治 概述 本项目的要求是: 一个检测程序,它采用一些 Java 应用程序的语法正确的源代码,并使用 Eclipse Java 抽象语法树 (AST) 解析器将...
Java Virtual Machine. BTrace 使用了前面提到的 Java.lang.instrument 包中的 API,允许开发者在运行时安全地添加或修改类的字节码,以便进行动态追踪。BTrace 的设计目标是提供一种简单、安全的方式来监控和诊断 ...
1. **创建测试环境**:在Android工程中,测试类通常位于 `src/androidTest/java` 目录下,继承自 `androidx.test.ext.junit.runners.AndroidJUnit4` 或 `android.support.test.runner.AndroidJUnit4` 类,并使用 `@...
标题"Iocomp.Instrumentation.WF40"指的是一个特定的软件组件或库,它可能是一个用于开发工业自动化和数据交换应用的工具。这个组件主要包括三个部分:`Iocomp.Instrumentation.WF40.Common.dll`、`Iocomp....
Hazelcast-Aware是一个基于Java Instrumentation API的Hazelcast扩展,可使用 Hazelcast 数据结构(分布式映射、列表、集合、队列、对象、锁、主题、执行程序、条目侦听器等),而无需与HazelcastInstance类交互。...
总的来说,Java动态编译和`Instrumentation`结合使用,能够实现强大的运行时代码修改功能,这在调试、测试、性能优化等领域都有着广泛的应用。但同时,这也需要对JVM内部机制有深入理解,以确保正确、安全地使用这些...
Java agent的关键组件是Instrumentation类,该类定义在rt.jar中,提供了一些工具帮助开发人员在Java程序运行时,动态修改系统中的Class类型。在Instrumentation类中,有两个重要的方法:addTransformer和...
标题 "TMS Instrumentation支持delphi7" 指出的是一个专为Delphi 7开发者设计的工具集,TMS Instrumentation。这个工具集是由TMS Software公司提供的,它扩展了Delphi集成开发环境(IDE)的功能,帮助开发者更高效地...