原文:Java中 i++ 是线程安全的么?为什么?

问题 在 int i i i 语句中,i i 是线程安全的么 如果不安全,请说明上面操作在JVM中的执行过程,为什么不安全 说出JDK中哪个类能达到以上的效果,并且是线程安全而且高效的,简述其原理。 回答 语句 i i 不是线程安全的。 该语句执行过程如下, 先把 i 的值取出来放到栈顶,可以理解为引入了一个第三方变量 k,此时,k的值为i, 然后执行自增操作,i的值变为 , 最后执行赋值操作 i ...

2018-09-24 13:31 0 6373 推荐指数:

查看详情

java i = i++ 的结果

  昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论。   int i = 0;   i = i++;   System.out.println("i的值是 "+i);   根据我们通常所知道的后自增先使用后增加的道理,i++在使用后i自身会增加一个数值,初始值为0时 ...

Fri Mar 03 06:26:00 CST 2017 0 11614
i++为什么是线程安全

分析: 如果是全局变量,i++是不安全的,因为java在操作i++的时候,是分步骤做的,可以理解为:temp = i;temp2 = i+1;i=temp2;如果线程1在执行第一条代码的时候,线程2访问i变量,这个时候,i的值还没有变化,还是原来的值,所以是不安全的。 从更底层的角度讲,主要 ...

Sun Apr 19 05:30:00 CST 2020 0 699
i++为什么是线程安全

如果是全局变量,i++是不安全的,因为java在操作i++的时候,是分步骤做的,可以理解为:tp = i;tp2 = i+1;i=tp2;如果线程1在执行第一条代码的时候,线程2访问i变量,这个时候,i的值还没有变化,还是原来的值,所以是不安全的。 从更底层的角度讲,主要是因为i++这个操作 ...

Thu Jun 20 23:50:00 CST 2019 0 573
java i = i++和 j = i++ 的区别

  由于i++i--的使用会导致值的改变,所以在处理后置的++和--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值, 而完成赋值运算之后,这块内存会被释放。 (1)对于j = i++的情况   i的原始值存放在后开辟的内存,最后将这个值赋给j ...

Tue Mar 07 05:41:00 CST 2017 0 5273
i++和++i的区别,及其线程安全问题

i++和++i都是i=i+1的意思,但是过程有些许区别: i++:先赋值再自加。(例如:i=1;a=1+i++;结果为a=1+1=2,语句执行完后i再进行自加为2) ++i:先自加再赋值。(例如:i=1;a=1+++i;结果为a=1+(1+1)=3,i先自加为2再进行运算) 但是在单独使用 ...

Thu Mar 14 17:58:00 CST 2019 0 782
Javai++和++i的区别

i++和++i 都是自增运算,本质上都是+1操作,不同点在于赋值和运算的顺序有所不同; 其实只要记住一条铁律 ++在前先运算,++在后先赋值; a = i++ 因为++在后, i先赋值a=i; i=i+1; a = ++i 因为++在前 , i+1先运算 i = i+1 a=1; ...

Sun Jul 25 03:03:00 CST 2021 0 167
关于Javafor循环的i++和++i区别

我们应该都知道i++和++i的区别是: ++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1; for循环的执行顺序如下: for(a;b;c) {   d; } 进入循环执行a;//只是进入的时候执行 执行b; //条件为真 ...

Fri Jul 20 17:26:00 CST 2018 0 2326
Java i++ 和 ++i 的区别

学习目标: 理解i++和++i的区别 学习内容: 1、i++ / i- - i++/i- -:遇到 i++i- -,i先参与运算,然后 i 再自加或自减1 代码如下: 执行结果: 执行结果表明b是先和a进行比较运算,然后b再进行自增1 2、 ++i / - -i ++i ...

Fri Mar 12 21:13:00 CST 2021 0 389
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM