
正文
java代码的原子性,java代码加密
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
请问java中的原子操作有哪些?
在Java中可以通过锁和循环CAS的方式来实现原子操作。CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作。原子操作是指一个不受其他操作影响的操作任务单元。
原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型)这个操作 是不可分割的,那么我们说这个操作是原子操作。再比如:a++;这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。
原子性(Atomicity)Java中,对基本数据类型的读取和赋值操作是原子性操作,所谓原子性操作就是指这些操作是不可中断的,要做一定做完,要么就没有执行。
Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* 包中所有类的一切操作。
原子操作(atomic operation)是不需要synchronized,所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch;java中一般事务管理里面用到原子操作。
相关问答
Q1: 在java中,什么是原子性
原子性,就是不会有中间状态存在,要么什么都没改变,要么全都改变。不会有一部分没改变,一部分改变了。引用赋值,或者说所有赋值操作都不是原子性的。对应的原子类是AtomicReferenc。
什么是Java事务 通常的观念认为,事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。
java提供了 sychronized代码块,lock接口(它的实现重入锁是比较常用的)。还可以使用原子数据结构。AtomicInteger、AtomicLong、AtomicReference等。可见性。
在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
Q2: java多线程中如何保证变量的可见性,原子性
volatile修饰的变量可以保证可见性,假如,一个变量只有 1或者0两种情况。那么volatile修饰之后,就不需要对这个变量加同步操作了。强调一下。volatile不能保证原子性。
原子性:原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么 全部执行成功要么全部执行失败。可见性:一个线程对共享变量的修改,另一个线程能够立刻看到。
通过AtomicInteger来操作 是线程安全的 ,而且性能貌似远超 用synchronized的方法 因此不用加synchronized。确实是资源的浪费。
可见性:可见性是指当一个线程修改了共享变量之后,能够立马同步到主存中,其他线程能够立即得知这个修改。
Q3: Java多线程之Atomic:原子变量与原子类
1、不是的,实际它是i=i+1,这个操作首先要读取i的值,然后为i值加1。是需要拆分的。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。有好几种方式实现一个原子操作。
2、从Java5开始JDK的atomic包里提供了一个类AtomicStampedReference来解决ABA问题。
3、如果此方法(在不同的类间参数类型也不同)当前保持 expectedValue,则以原子方式将变量设置为 updateValue,并在成功时报告 true。
关于java代码的原子性和java代码加密的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






