執行緒池的優點(不看後悔,一看必懂)
①降低資源消耗-->重複利用已經建立的執行緒
②提高響應速度-->當任務到達時,任務可以直接從執行緒池獲取執行緒,而不需要建立新的執行緒
③提高執行緒的可管理性-->使用執行緒池可以統一分配,調優和監控,例如可以根據系統的承受能力,調增執行緒池中工作執行緒的數目
相關推薦
執行緒池的優點(不看後悔,一看必懂)
①降低資源消耗-->重複利用已經建立的執行緒 ②提高響應速度-->當任務到達時,任務可以直接從執行緒池獲取執行緒,而不需要建立新的執行緒 ③提高執行緒的可管理性-->使用執行緒池可以統一分配,調優和監控,例如可以根據系統的承受能力,調增執行緒池中工作執行
如何實現自己的執行緒池(不看後悔,一看必懂)
首先,在服務啟動的時候,我們可以啟動好幾個執行緒,並用一個容器(如執行緒池)來管理這些執行緒。當請求到來時,可以從池中取一個執行緒出來,執行任務(通常是對請求的響應),當任務結束後,再將這個執行緒放入池中備用;如果請求到來而池中沒有空閒的執行緒,該請求需要排隊等候。最後,當服務關閉時銷燬該池即可
java中常見的執行緒池(不看後悔,一看必懂)
Executor介面表示執行緒池,它的execute(Runnable task)方法用來執行Runnable型別的任務,ExecutorService是Executor的子介面,聲明瞭管理執行緒池的一些方法 Java.util.concurrent.Executors類包含了一些靜態
執行緒數設多少合適(不看後悔,一看必懂)
①工作執行緒數是不是設定的越大越好? 回答:肯定不是的 1)一來伺服器CPU核數有限,同時併發的執行緒數是有限的,1核CPU設定10000個工作執行緒沒有意義  
servlet是執行緒安全的嗎(不看後悔,一看必懂)
Servlet 預設是單例模式,在web 容器中只建立一個例項,所以多個執行緒同時訪問servlet的時候,Servlet是執行緒不安全的。 那麼 web 容器能為每個請求建立一個Servlet的例項(增加了系統的消耗)嗎?當然是可以的,只要Servlet實現SingleT
hibernate相關面試題(不看後悔,一看必懂)
概述 hibernate框架應用在dao層,,hibernate的底層程式碼是jdbc,它是一個開源的輕量級的框架. hibernate通過orm思想對資料庫進行crud操作.orm中文翻譯過來就是物件關係對映,它讓實體類(就是通常所說的pojo)和資料庫表對應,讓實體類的欄位和表裡的欄
spring bean的單例和多例的使用場景和在單例bean中注入多例(不看後悔,一看必懂)
為什麼用單例或者多例?何時用? 之所以用單例,是因為沒必要每個請求都新建一個物件,這樣子既浪費CPU又浪費記憶體; 之所以用多例,是為了防止併發問題;即一個請求改變了物件的狀態,此時物件又處理另一個請求,而之前請求對物件狀態的改變導致了物件對另一個請求做了錯誤的處理;
spring bean的生命週期和作用域(不看後悔,一看必懂)
bean的生命週期 生命週期執行的過程如下: 1)spring在讀取xml配置檔案時對bean進行例項化,預設bean是單例 2)spring對bean進行依賴注入 3)如果bean實現了BeanNameAware介面,spring將bean的id傳給setBeanName
Spring的IOC,DI和AOP(不看後悔,一看必懂)
spring的優點 ①IOC和DI降低了元件之間的耦合性 ,讓程式設計師更專注於業務邏輯 ②容器提供了眾多的輔助類,能加快應用的開發 ③spring對於主流的應用框架提供了整合支援,如hibernate,mybatis,Struts等 ④spring屬於低侵入式設計,程式碼的汙染
TCP的三次握手,四次揮手(不看後悔,一看必懂)
三次握手 step1:第一次握手 客戶端傳送資料包到伺服器,(在此連線請求報文段中的同步位SYN=1,確認ACK=0,表示這是一個TCP連線請求資料報文,序號seq=x,表示傳輸資料時的起始序號是x)此時,客戶端進入SYN_SENT狀態,等待伺服器確認 step2:第二次握手
JSP和Servlet的區別和聯絡(不看後悔,一看必懂)
在引入jsp之前呢,在web應用程式中,所有的業務邏輯和HTML的響應都是在Servlet中實現的.由於業務邏輯和檢視沒有分離,系統的可擴充套件性,可讀性和可維護性都較差 jsp從表面上看,就是嵌入了java程式碼的HTML檔案;本質上jsp相當於一個Servlet.只要是
長連線是如何實現的(不看後悔,一看必懂)
在HTTP1.0和HTTP1.1協議中都有對長連線的支援。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能夠支援,而HTTP1.1預設支援. http1.0請求與服務端的互動過程: &nbs
什麼是長連線和短連線(不看後悔,一看必懂)
在日常專案中,大多的時候我們用的是短連線,一個請求過來,一個執行緒處理完該請求,執行緒被執行緒池回收,這個請求就關閉了.雖然這能滿足很大部分的需求,但是也有些問題,比如說:如果客戶端發的請求比較多,比較頻繁,服務端就會忙於建立連線處理請求,由於服務端的執行緒數也有限,併發比較大的話有可能會造成服
mysql中char和varchar和text的區別(不看後悔,一看必懂)
①CHAR是一種固定長度的型別,適合用在身份證號碼、手機號碼等定。,VARCHAR則是一種可變長度的型別。適合用在長度可變的屬性。 text不設定長度, 當不知道屬性的最大長度時,適合用text。 ②按照查詢速度: char最快, varchar次之,text最慢。 也就是說,
ThreadLocal詳解(不看後悔,一看必懂)
ThreadLocal概要 我們可以使用synchorinized 關鍵字來為變數加鎖以解決執行緒安全問題,從而限制只能有一個執行緒來使用此變數,但是加鎖會大大影響程式執行效率 ThreadLocal是執行緒區域性變數(從執行緒的角度看,目標變數就像是執行緒的本地變數), 通常
ThreadPoolExecutor詳解(不看後悔,一看必懂)
構造器引數分析 第四個構造器原始碼 corePoolSize:核心池的大小 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0,當有任務來之後,就會建立一個執行緒去執行任務,當執行緒池中的執行緒數數目少於corePoolSize時,有新任務進來就新建一個執行緒,即使
談談你對CountDownLatch的理解(不看後悔,一看必懂)
CountDownLatch是java.util.concurrent包中一個工具類。它能夠使一個或者多個執行緒等待另外一些執行緒完成各自的工作之後,再繼續執行 使用CountDownLatch的一些情景: ①需要去解析一個Excel的資料,為了更快的解析,每個sheet都使用一個執行緒
LongAdder和AtomicLong的區別(不看後悔,一看必懂)
AtomicLong的原理是依靠底層的cas來保障原子性的更新資料,在要新增或者減少的時候,會使用自循(CLH)方式不斷地cas到特定的值,從而達到更新資料的目的。然而線上程競爭激烈的情況下,自循往往浪費很多計算資源才能達成預期效果。 面對自循的缺點,jdk1.8推出了Lo
記憶體洩漏和記憶體溢位(不看後悔,一看必懂)
記憶體洩漏 記憶體洩漏是指不再被程式使用的物件或者變數還在記憶體中佔儲存空間 記憶體洩漏主要有兩種情況:一是在堆中申請的空間沒有被釋放;二是物件已經不再使用,但仍然在記憶體中保留著,垃圾回收器則無法保證不再使用的物件會被釋放.因此java語言中的記憶
什麼是GC(不看後悔,一看必懂)
GC就是垃圾回收,它的主要作用就是回收程式中不再使用的記憶體. 是否可以主動通知jvm進行垃圾回收? 不能實時呼叫垃圾回收器對某個物件或者所有物件進行垃圾回收.但是可以通過System.gc()方法