JAVA 啟動並執行最小單元是什嗎?

來源:互聯網
上載者:User
最近從PHP轉到了JAVA。 但是一直迷惑一個問題。就是JAVA 為什麼會有串連池這個概念呢?
PHP的運行方式是從指令碼開始到指令碼結束,指令碼結束,對象自動就沒了。java是如何啟動並執行呢?java難道是不同線程調用的還是同一個對象,那不就亂了??不同使用者來,怎麼區別誰是誰的對象??我都搞暈了。現在我都不敢new 對象了。

回複內容:

最近從PHP轉到了JAVA。 但是一直迷惑一個問題。就是JAVA 為什麼會有串連池這個概念呢?
PHP的運行方式是從指令碼開始到指令碼結束,指令碼結束,對象自動就沒了。java是如何啟動並執行呢?java難道是不同線程調用的還是同一個對象,那不就亂了??不同使用者來,怎麼區別誰是誰的對象??我都搞暈了。現在我都不敢new 對象了。

php和java都搞過,來幫樓主理理。
疑問兼推測:樓主是用php和java做web。
當然,這也不重要,不過如果都是做web可能由於進程和線程的區別,剛開始確實會混淆。
先說結論:java運行方式,自始至終都是main方法為入口,啟動一個JVM進程。
1、如果樓主只是運行一個簡單java指令碼,跟其他語言一樣,都是main方法運行->結束,對象都銷毀。
2、如果是運行一個web,那我用tomcat+servlet的方式來解釋和php+cgi的不一樣:
(1)對於一個web程式(用tomcat),java運行開始就是從tomcat啟動的jvm,這個時候就是一個進程在運行,所有對象都在這個進程中。
(2)當一個http請求過來,tomcat有專門一個對象會去接收請求之後會建立一個線程去載入對應的servlet或者jsp頁面(它類似php),然後去執行和響應。
區別就是這裡,php通過webserver+cgi是去啟動一個進程執行php指令碼直到運行結束,那麼這次請求是沒有任何對象還或者了。
但是java,由於tomcat一直沒有關閉,所以整個進程是一直存活著。你訪問一個jsp,如果它有全域變數,那麼即便jsp指令碼執行完響應結束,全域變數還是會留在tomcat這個啟動的這個jvm記憶體中。
不知道樓主看得明白不。。

“java難道是不同線程調用的還是同一個對象,那不就亂了?”
關於這個疑問。就像我上面提到的那個專門對象是一樣的。由它接收到個請求,然後再給每個請求分配一個線程去處理。
在並發的情況下,這個對象完全可能被多個線程在同時使用。 那為什麼可以是同一個對象處理,就是安全執行緒這塊了,這個你可以看@捏造的信仰 的解答,寫得很清楚,但你要瞭解多線程。

我只針對多線程方面的東西解釋下。首先樓主可能需要理解,在 Java 中,什麼樣的對象是可以多個線程共用的,什麼樣的對象是不可以的。這個標準取決於對象的成員是否可以線上程之間共用。比如

public class A {    public int value;}

顯然,如果多個線程同時訪問同一個 A 對象,就會有危險,因為它們會把 value 的值給“搞亂了”。而 A 類也被稱為非安全執行緒的。不過,如果我改成這樣:

public class A {    private int value;                            // 1    public A(int value) {this.value = value;}     // 2    public int getValue() {return this.value;}    // 3}

這樣 A 就變成安全執行緒的了,為什麼呢,因為它的成員 value 在(1)處變成私人的了,而且只能在建構函式(2)中賦值,且一旦賦值就只能讀取(3),而讀取是可以多個線程同時操作的。

所以,一個簡單的原則就是,一個可賦值的成員會成為多線程中的隱患。如果一個類包含可賦值的成員,那麼這個類的對象應該線上程當中獨立存在,而不應該共用給多個線程同時訪問,除非保證只有一個線程會去寫。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.