前几天我偶然发现了一个不安全的包装,它的功能让我感到惊讶。
当然,这个类是没有记录的,但是我想知道是否有一个很好的理由使用它。可能会出现哪些需要使用它的场景?如何在现实场景中使用它?
此外,如果您确实需要它,这难道不表明您的设计可能存在问题吗?
为什么Java包含这个类?
前几天我偶然发现了一个不安全的包装,它的功能让我感到惊讶。
当然,这个类是没有记录的,但是我想知道是否有一个很好的理由使用它。可能会出现哪些需要使用它的场景?如何在现实场景中使用它?
此外,如果您确实需要它,这难道不表明您的设计可能存在问题吗?
为什么Java包含这个类?
当前回答
not safe.park()和not safe.unpark()用于构建自定义并发控制结构和协作调度机制。
其他回答
堆外集合对于分配大量内存并在使用后立即释放内存而不受GC干扰可能很有用。我基于sun.misc.Unsafe编写了一个用于处理堆外数组/列表的库。
如果您需要替换当前使用它的某个类所提供的功能,则需要使用它。
这可以是自定义/更快/更紧凑的序列化/反序列化,一个更快/更大的缓冲区/可调整大小的ByteBuffer版本,或者添加一个原子变量,例如当前不支持的。
我曾经用它来处理所有这些问题。
我自己没有使用过它,但我认为如果你有一个变量,只是偶尔被多个线程读取(所以你真的不想让它volatile),你可以在主线程中写入它时使用putObjectVolatile,在从其他线程中进行罕见的读取时使用readObjectVolatile。
not safe.park()和not safe.unpark()用于构建自定义并发控制结构和协作调度机制。
类不安全 用于执行低级、不安全操作的方法的集合。虽然类和所有方法都是公共的,但该类的使用是有限的,因为只有可信代码才能获得它的实例。
它的一种用法是在java.util.concurrent.atomic类中:
AtomicIntegerArray AtomicLongArray