java 里,每個(gè)線程都有自己獨(dú)享的空間,也就是棧內(nèi)存。線程在調(diào)用方法的時(shí)候,會(huì)創(chuàng)建一個(gè)棧幀。也就是說(shuō)調(diào)用一個(gè)方法的時(shí)候,也就是一個(gè)棧幀的入棧過(guò)程,該方法執(zhí)行完畢,棧幀也就出棧了。 換句話講,成員方法對(duì)于每個(gè)線程事實(shí)上是私有的,而不是你表面看上去的那樣是 "共享" 的。 那么為什么成員變量會(huì)出問(wèn)題呢? 如你所知道的,每個(gè)新建對(duì)象都存放在堆中,每個(gè)持有該對(duì)象引用的線程,都可以訪問(wèn)到它(只要你有那個(gè)權(quán)限)。 這也就是說(shuō),成員變量對(duì)于每個(gè)線程,事實(shí)上是共享的。
面試官問(wèn)的面試題: java 里,每個(gè)線程都有自己獨(dú)享的空間,也就是棧內(nèi)存。線程在調(diào)用方法的時(shí)候,會(huì)創(chuàng)建一個(gè)棧幀。也就是說(shuō)調(diào)用一個(gè)方法的時(shí)候,也就是一個(gè)棧幀的入棧過(guò)程,該方法執(zhí)行完畢,棧幀也就出棧了。
換句話講,成員方法對(duì)于每個(gè)線程事實(shí)上是私有的,而不是你表面看上去的那樣是 "共享" 的。
那么為什么成員變量會(huì)出問(wèn)題呢?
如你所知道的,每個(gè)新建對(duì)象都存放在堆中,每個(gè)持有該對(duì)象引用的線程,都可以訪問(wèn)到它(只要你有那個(gè)權(quán)限)。
這也就是說(shuō),成員變量對(duì)于每個(gè)線程,事實(shí)上是共享的。