雙層門 java語言下,static單例對象會不會在不同進(jìn)程共享這個(gè)單例對象?
java語言下,static單例對象會不會在不同進(jìn)程共享這個(gè)單例對象?首先可以肯定的告訴你,不會共享我們可以逆向思考下,如果會共享,那我們還需要處理跨進(jìn)程通訊的機(jī)制嗎?就是因?yàn)椴粫圆判枰?。簡單說
java語言下,static單例對象會不會在不同進(jìn)程共享這個(gè)單例對象?
首先可以肯定的告訴你,不會共享
我們可以逆向思考下,如果會共享,那我們還需要處理跨進(jìn)程通訊的機(jī)制嗎?就是因?yàn)椴粫?,所以才需要?br/>
簡單說,每個(gè)進(jìn)程都有自己的獨(dú)立內(nèi)存空間,然后進(jìn)行裝載,單例自然是不會共享的,一個(gè)進(jìn)程相當(dāng)于會有自己的一個(gè)單例。
service層是單例還是多例?
單例在spring中是默認(rèn)的,我們常用的service和dao層的對象通常都是單例的,但service或dao并不一定是單例,要產(chǎn)生多例,則在配置文件的bean中添加scope="prototype"
javaservlet是單例還是多例?
按照單例的編碼規(guī)則,Servlet本身只是一個(gè)Java,結(jié)構(gòu)并不是單例結(jié)構(gòu)。只是Web容器在維護(hù)這些Servlet的時(shí)候只給創(chuàng)建一個(gè)實(shí)例存在JVM中,用戶請求服務(wù)時(shí),服務(wù)器只調(diào)用它已經(jīng)實(shí)例化好的Servlet對象來處理請求。所以,告訴你的是Servlet并不是單例,只是容器讓它只實(shí)例化一次,變現(xiàn)出來的是單例的效果而已。但需要注意的是,Servlet是web容器來控制實(shí)例化的,并不是你自己用你編寫的代碼來實(shí)例化,即使你自己編寫代碼實(shí)例化你的servlet,Web服務(wù)器也不會直接調(diào)用你的實(shí)例化的Servlet對象的。