赞
踩
61. 简述什么是原子操作?Java 中有哪些原子操作? |
java中的原子操作和线程安全是具有一定的联系性的,这其中的内容也是比较复杂的。它们所涉及的范围也是非常的广阔的。不知道你掌握了吗?一起来看看吧。 首先说一下,什么叫原子的(原子操作)? Java原子操作是指:不会被打断地的操作。(就是做到互斥和可见性) 那难道原子操作就可以真的达到线程安全同步效果了吗?实际上有一些原子操作不一定是线程安全的。那么,原子操作在什么情况下不是线程安全的呢? 也许是这个原因导致的:java线程允许线程在自己的内存区保存变量的副本。 允许线程使用本地的私有拷贝进行工作而非每次都使用主存的值是为了提高性能后,就是各自做自己的副本了,更新操作(写操作)因未写入主存中,导致其它线程不可见)。 那该如何解决呢? 因此需要通过java同步机制。 在java中,32位或者更少位数的赋值是原子的。在一个32位的硬件平台上,除了double和long型的其它原始类型通常都是使用32位进行表示,而double和long通常使用64位表示。另外,对象引用使用本机指针实现,通常也是32位的。对这些32位的类型的操作是原子的。 这些原始类型通常使用32位或者64位表示,这又引入了另一个小小的神话:原始类型的大小是由语言保证的。这是不对的。java语言保证的是原始类型的表数范围而非JVM中的存储大小。因此,int型总是有相同的表数范围。在一个JVM上可能使用32位实现,而在另一个JVM上可能是64位的。 再次强调:在所有平台 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。