乙個java專案放入tomcat運 行是不是就自動開啟了多執行緒,那還有必要用runnable開執行緒嘛?

時間 2021-06-03 17:44:15

1樓:聲聲好物

題主的問題我理解下來應該是說tomcat 處理請求的時候已經用了多執行緒,已經達到併發執行得目的,乙個請求執行緒如果io了,也會切到別的執行緒上執行,避免cpu的浪費,那還有沒有必要用再用多執行緒呢?

其實還是有必要的哈,因為你站在單個執行緒的角度來看的話,你的業務還是序列的,例如你乙個請求裡面有三個rpc請求,每個請求io時間需要1s,那執行完這個請求總計要3s,但是你用併發的方式去解決的話,有可能1s就拿到記錄了。

題主可能會有疑問的地方在於,我該執行緒雖然是序列的,但是io的時候,也是把cpu給別的執行緒用了,可以允許處理更多請求了呀。其實是沒錯的,如果你的應用只有乙個介面的話,確實可以這樣,但實際應用有上百上千個介面,每個介面的處理邏輯不一樣,有的更依賴cpu,有的io比較多,所以是有差異化的。

2樓:心願

tomacat開啟的執行緒是給乙個使用者請求開的,多個使用者請求就開多個執行緒去執行,無需等待

Runable是可以理解成在乙個使用者請求內,再開啟多個執行緒去處理。

就相當於,我乙個使用者請求進來了,但是需要好多步驟才能給相應,太慢了,我在這個請求內用runable多開執行緒去分別處理這個步驟,這樣就快了麼不是。

當然還有很多很多問題,比如如何拿到響應,同步資料怎麼辦等等。

在java中,為什麼if 裡面可以放入乙個Boolean類,而放入其他的類就通不過編譯呢?

只喝伊利 因為if 語句就是用來做判斷用的,產生的結果只有true和false這兩種結果。你第乙個例子裡面寫了布林型別的,而且給了結果是false在判斷的是時候檢查了布林型別是是否是true和false的問題,所以能通過 而你的第二個例子是是string型別,賦值又是空而且你怎麼能讓if 自動去判斷...

這是乙個bug嗎 JAVA?

equals引數是乙個Object,首先判斷傳入是否為null,是null就直接返回false了,是判斷是否是同一物件的。 物件的值是空和空物件是不同的。比如String s null s是乙個引用,指向空物件。String s s是乙個引用,指向物件 只不過物件的值為空而已。兩者是不同的,乙個是空...

請問怎麼用Java做乙個部落格?

題主選擇了錯誤的做部落格方法,而正確的方法是GithubPages 靜態站點生成器。Github原生支援Jekyll3,但是我推薦用Hugo。題主做乙個部落格的目的應該是為了個性化的輸出內容,那麼利用現有的工具才是正確的做法,而不是南轅北轍先去學個程式語言 入個門https zhuanlan p 3...