線程安全單例模式j(luò)ava Java線程安全問題指的是全局變量,還是靜態(tài)變量?
Java線程安全問題指的是全局變量,還是靜態(tài)變量?哈哈,當(dāng)你看到這個(gè)問題,你應(yīng)該有點(diǎn)白。全局變量和靜態(tài)變量都有線程安全問題,因?yàn)樗鼈冊(cè)诙褍?nèi)存中,由所有線程共享。如果您想了解線程,請(qǐng)先轉(zhuǎn)到JAVA內(nèi)存模
Java線程安全問題指的是全局變量,還是靜態(tài)變量?
哈哈,當(dāng)你看到這個(gè)問題,你應(yīng)該有點(diǎn)白。全局變量和靜態(tài)變量都有線程安全問題,因?yàn)樗鼈冊(cè)诙褍?nèi)存中,由所有線程共享。如果您想了解線程,請(qǐng)先轉(zhuǎn)到JAVA內(nèi)存模型。靜態(tài)變量:線程不安全。靜態(tài)變量,即類變量,位于方法區(qū)域中。它們被所有對(duì)象共享并共享一部分內(nèi)存。修改靜態(tài)變量后,其他對(duì)象對(duì)修改是可見的,因此線程是不安全的。
2. 實(shí)例變量:?jiǎn)卫J剑ㄖ淮嬖谝粋€(gè)對(duì)象實(shí)例)是線程不安全和非單例線程安全的。實(shí)例變量是對(duì)象實(shí)例的私有變量,并在虛擬機(jī)堆中分配。如果這個(gè)對(duì)象在系統(tǒng)中只有一個(gè)實(shí)例,那么在多線程環(huán)境中,“就像”這個(gè)靜態(tài)變量,被一個(gè)線程修改后,其他線程都能看到修改,所以線程是不安全的。如果每個(gè)線程在不同的對(duì)象中執(zhí)行,那么對(duì)象和對(duì)象之間的實(shí)例變量是不安全的,修改不會(huì)相互影響,因此線程安全。
3. 局部變量:線程安全。當(dāng)每個(gè)線程執(zhí)行時(shí),它會(huì)將局部變量放在自己的堆棧幀的工作內(nèi)存中,這在線程之間是不共享的,因此不存在線程安全問題。