① java如何依據cpu核數設置合適的線程數
1:獲取cpu核心數:
Runtime.getRuntime().availableProcessors();
創建線程池:
Executors.newFixedThreadPool(nThreads);//nThreads為線程數
2:這個只要伺服器內存夠大,CPU核心數較多,處理數據比較強就好了,注意不要一下分配幾千個線程,可 能會導致堆棧溢出的,這樣程序就掛了,因為線程很費內存資源
② java多線程開多少上限量。
1。java的線程開啟,默認的虛擬機會分配1M的內存,但是在4G的windows上線程最多也就開到300多 ,是因為windows本身的一些限制導致。
2。虛擬機給每個線程分配的內存(棧空間)是由虛擬機參數-Xss來指定的,在不同平台上對應的默認大小可以 在oracle的官方文檔上查詢到:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman /optionX.html
其中,Linux64位默認Xss值為256K,並非1M或10M
3。一個Java進程可以啟動的線程數可以通過如下公式計算:
(系統剩餘內存 - 最大堆容量Xmx - 最大方法區容量MaxPermSize)/ 最大棧空間Xss
這樣,4G的伺服器單個進程可以開多少線程,可以粗略計算出來,大概是5000個線程。
③ java應用中可以有多少 線程池
線程池只存在一個才對。類似於資料庫連接池么,存在的目的就是控制資料庫的連接數量。如果存在的多個的話那就沒意義了。線程池中可以控制並發的線程數量,一樣的道理
④ 如何在c盤中查看java線程數
Windows
通過任務管理器查看進程信息
在進程頁簽中查看Java進程,我是idea啟動,因此可以在idea下查看相關進程
此外可以在詳細信息頁簽下Ctrl+f搜索java
通過控制台查看進程信息
進入CMD,鍵入tasklist,可以查看所有的進程信息,包括進程ID、內存使用情況
查看Java相關的進程,可以添加過濾條件 tasklist | findstr "java" ,需要注意windows中字元串需要使用雙引號,要不就不加也是可以的
如果是在IDEA中啟動程序,可以借用idea的Terminal終端執行命令
taskkill 殺死進程
殺死進程使用taskkill /pid 指定進程id,如果無法殺死,可以嘗試強制殺死taskkill /pid 進程id -t -f
可以看到idea控制台中進程已結束
通過tasklist | findstr 進程id 已經無法查詢到該進程,說明進程終止成功