日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

京东面试题:Java中 ++i 的操作是线程安全的么?为什么?如何使其线程安全呢?

發(fā)布時間:2024/2/28 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 京东面试题:Java中 ++i 的操作是线程安全的么?为什么?如何使其线程安全呢? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自?

相關(guān)文章

你真的了解volatile關(guān)鍵字嗎?http://blog.csdn.net/FansUnion/article/details/79495080

面試題:為什么最后兩行沒有運行?http://blog.csdn.net/FansUnion/article/details/79625308

Java并發(fā)編程之CAS?http://blog.csdn.net/FansUnion/article/details/79494554

網(wǎng)友觀點

一、

如果是方法里定義的,一定是線程安全的,因為每個方法棧是線程私有的。

JVM的棧是線程私有的,所以每個棧幀上定義的局部變量也是線程私有的,意味著是線程安全的。可以參考http://blog.csdn.net/taohuaxinmu123/article/details/24472073中對Java虛擬機棧(Java Virtual Machine Stacks)的說明。

如果是類的成員變量,i++則不是線程安全的,因為i++會被編譯成幾句字節(jié)碼語句執(zhí)行,可以通過synchronize塊來提供同步。

二、非線程安全, ? ?用?AtomicInteger 即可

三、++i的操作肯定是線程安全的。

四、

如果是我答這道題:

先說不是原子的,因為這個是分為三步,讀值,+1,寫值。在這三步任何之間都可能會有CPU調(diào)度產(chǎn)生,造成i的值被修改,造成臟讀臟寫。

接下來說volatile不能解決這個線程安全問題。因為volatile只能保證可見性,不能保證原子性。回答這個只為了讓面試官曉得你考慮周全,知識面廣。

接下來說可以用鎖。使用synchronized或者ReentrantLock都可以解決這個問題。這里還可以比較下這兩種方式的優(yōu)劣。教科書式的比較結(jié)束后,來一句“我認為一般使用synchronized更好,因為JVM團隊一直以來都在優(yōu)先改進這個機制,可以盡早獲得更好的性能,并且synchronized對大多數(shù)開發(fā)人員來說更加熟悉,方便代碼的閱讀”。

最后補上AtomicInteger。為什么AtomicInteger使用CAS完成?因為傳統(tǒng)的鎖機制需要陷入內(nèi)核態(tài),造成上下文切換,但是一般持有鎖的時間很短,頻繁的陷入內(nèi)核開銷太大,所以隨著機器硬件支持CAS后,JAVA推出基于compare and set機制的AtomicInteger,實際上就是一個CPU循環(huán)忙等待。因為持有鎖時間一般較短,所以大部分情況CAS比鎖性能更優(yōu)。

最初是沒有CAS,只有陷入內(nèi)核態(tài)的鎖,這種鎖當(dāng)然也需要硬件的支持。后來硬件發(fā)展了,有了CAS鎖,把compare 和 set 在硬件層次上做成原子的,才有了CAS鎖。

五、

由于線程共享棧區(qū),不共享堆區(qū)和全局區(qū),所以當(dāng)且僅當(dāng) i 位于棧上是安全的,反之不安全。

2. AtomicInteger 和 各種 Lock 都可以確保線程安全。AtomicInteger 的效率高是因為它是互斥區(qū)非常小,只有一條指令,而 Lock 的互斥區(qū)是拿鎖到放鎖之間的區(qū)域,至少三條指令。

原文鏈接:http://group.jobbole.com/26557/


總結(jié)

以上是生活随笔為你收集整理的京东面试题:Java中 ++i 的操作是线程安全的么?为什么?如何使其线程安全呢?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。