原文: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