lazySet是使用Unsafe.putOrderedObject方法,这个方法在对低延迟代码是很有用的,它能够实现非堵塞的写入,这些写入不会被Java的JIT重新排序指令(instruction reordering),这样它使用快速的存储-存储(store-store) barrier, 而不是较慢的存储-加载(store-load) barrier, 后者总是用在volatile的写操作上,这种性能提升是有代价的,虽然便宜,也就是写后结果并不会被其他线程看到,甚至是自己的线程,通常是几纳秒后被其他线程看到,这个时间比较短,所以代价可以忍受。
类似Unsafe.putOrderedObject还有unsafe.putOrderedLong等方法,unsafe.putOrderedLong比使用 volatile long要快3倍左右。.
所以还是一个速度的问题,据传别人的测试,使用synchronized 的速度仅比volatile慢一倍,所以这里的快3倍还是很有价值的。
相关推荐
java里的volatile关键字详解.pdf
在单片机编程中,`volatile` 是一个非常重要的关键字,尤其在使用 C 语言时。这个关键字在处理硬件交互、中断服务程序以及多线程环境中的变量时扮演着关键角色。`volatile` 关键字的主要目的是告诉编译器,某个变量...
在IT行业中,尤其是在图形处理和操作系统交互的领域,EGL(Embedded Graphics Library)是一个关键的接口,它允许应用程序与GPU进行通信,以便进行高效的图形渲染。`copy_volatile_assign.rar_The Given`这个标题...
对于嵌入式系统和驱动开发,合理地使用volatile可以确保程序能正确地与硬件交互,但需谨防陷阱,避免不必要的优化导致的错误。因此,使用volatile时应遵循保守原则,除非完全理解其行为,否则尽量避免使用复杂的技巧...
标题中的"xquse-volatile-breadth.zip_xquse"暗示了这可能是一个与xquse相关的项目,而"volatile-breadth"可能是指程序的特点,可能是关于数据处理的广度或者快速变化的特性。然而,这个部分并不直接关联到VB编程或...
volatile
《Volatile:一款轻量级Web框架的探索与解析》 在编程领域,开源项目扮演着至关重要的角色,它们促进了技术的共享与创新。今天我们要深入探讨的是名为"Volatile"的一个新晋开源项目,它是一款主打极简主义的Web框架...
《Java Unsafe类的深入解析与应用》 Java的Unsafe类是一个强大的工具,它位于rt.jar包中,提供了原子级别的操作,这些操作都是通过JNI(Java Native Interface)直接调用本地C++库实现的。Unsafe的存在是为了应对高...
在C语言中,有五个特殊的关键词用来控制变量的存储类别和行为:`auto`、`register`、`static`、`const`和`volatile`。它们各有不同的用途和特点: 1. **`auto`**: 这个关键词并不常用,因为它是默认的存储类别。它...
This document describes tokens and shows how to use them for non-volatile data storage in EmberZNet PRO.
### AVR-GCC 中如何使用 `volatile` 关键字 #### 1. `volatile` 关键字的基本概念 在编程语言中,尤其是C/C++中,`volatile` 是一个类型限定符,用来修饰变量,告知编译器该变量的值可能会在编译器未监控的情况下...
### 使用`Unsafe`的风险与注意事项 尽管`Unsafe`在特定场景下能显著提升性能,但使用时应极其谨慎。以下是一些注意事项: 1. **安全性**:`Unsafe`的使用可能导致数据安全性问题,因为它允许绕过Java的安全机制。 ...
如何使用我们的低延迟有界队列之一的示例。 // writer thread Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { queue.add(1); } }); // reader thread Executors...
在第二个例子中,我们可以看到,如果不使用 volatile 关键字,编译器可能会对变量 p 进行优化,从而导致编译后的汇编代码与我们的预期不符。只有当我们使用 volatile 关键字时,编译器才会按照我们编写的代码来生成...
### Java入门教程:数据类型与正确使用Volatile变量 #### 概述 在Java编程语言中,`volatile`关键字提供了一种轻量级的同步机制,用于确保共享变量的可见性和一定程度上的线程安全性。相比于传统的锁机制如`...
1. Volatile与常量的区别: - 常量(如5或"abc")是放在内存的只读区域,不能被修改。 - Volatile变量则是存储在普通内存中,可以被其他线程或外部设备修改。例如,一个硬件寄存器或中断服务程序可能改变的变量就...
C语言常见的关键字volatile的使用以及它的两个基本用法。 1.确保本条指令不会因编译器的优化而省略 2.提醒编译器它后面所定义的变量随时都有可能改变
`volatile`常用于多线程编程、嵌入式系统以及与硬件交互的场景。 1. **volatile 的作用** `volatile`关键字的主要作用是告诉编译器,变量的值可能在程序运行期间由不受程序控制的因素(如硬件中断、外部设备或并发...