導航:首頁 > 編程語言 > javaidle

javaidle

發布時間:2023-03-25 05:09:41

java 中幾種常用的線程池

一:newCachedThreadPool
(1)緩存型池子,先查看池中有沒有以前建立的線程,如果有,就reuse,如果沒有,就建立一個新的線程加入池中;
(2)緩存型池子,通常用於執行一些生存周期很短的非同步型任務;因此一些面向連接的daemon型server中用得不多;
(3)能reuse的線程,必須是timeout IDLE內的池中線程,預設timeout是60s,超過這個IDLE時長,線程實例將被終止及移出池。
(4)注意,放入CachedThreadPool的線程不必擔心其結束,超過TIMEOUT不活動,其會自動被終止

二:newFixedThreadPool
(1)newFixedThreadPool與cacheThreadPool差不多,也是能reuse就用,但不能隨時建新的線程
(2)其獨特之處:任意時間點,最多隻能有固定數目的活動線程存在,此時如果有新的線程要建立,只能放在另外的隊列中等待,直到當前的線程中某個線程終止直接被移出池子
(3)和cacheThreadPool不同,FixedThreadPool沒有IDLE機制(可能也有,但既然文檔沒提,肯定非常長,類似依賴上層的TCP或UDP IDLE機制之類的),所以FixedThreadPool多數針對一些很穩定很固定的正規並發線程,多用於伺服器
(4)從方法的源代碼看,cache池和fixed 池調用的是同一個底層池,只不過參數不同:
fixed池線程數固定,並且是0秒IDLE(無IDLE)
cache池線程數支持0-Integer.MAX_VALUE(顯然完全沒考慮主機的資源承受能力),60秒IDLE

三:ScheledThreadPool
(1)調度型線程池
(2)這個池子里的線程可以按schele依次delay執行,或周期執行
四:SingleThreadExecutor
(1)單例線程,任意時間池中只能有一個線程
(2)用的是和cache池和fixed池相同的底層池,但線程數目是1-1,0秒IDLE(無IDLE)

❷ java idleconnectiontestperiod和maxidletime的區別

樓主描述正是MySQL8小時問題,這個問題還是比較容易解決的。
樓主用的連接池是C3P0嗎?這里我以C3P0連接池為例來說明問題原因和解決方法。
問題原因:MySQL默認是自動關閉空閑超過8小時的連接,而C3P0並不知道該connection已經失效,如果這時有Client請求connection,C3P0將該失效的Connection提供給Client,將會造成異常。重啟Tomcat操作會使C3P0重新建立和資料庫的連接池,且池內的連接都是有效的連接。
解決方法:c3p0要在8小時內關閉不使用的連接。這需要修改其中的一些配置參數,主要是maxIdleTime和idleConnectionTestPeriod。這兩個參數的值要小於28800秒。
建議配置如下:
<!-- 每次都驗證連接是否可用 -->
<property name="hibernate.c3p0.validate">true</property>
<!-- 檢查連接池中所有空閑連接的間隔時間,單位為秒(要注意的是MySQL的自動關閉空閑超過8小時連接的機制) -->
<property name="hibernate.c3p0.idle_test_period">18000</property>
<!-- 連接的最大空閑時間,25000秒內未使用則連接被丟棄。單位為秒(要注意的是MySQL的自動關閉空閑超過8小時連接的機制) -->
<property name="hibernate.c3p0.timeout">25000</property>

附上在 hibernate中配置c3p0的關鍵字。

c3p0.acquireIncrement hibernate.c3p0.acquire_increment
c3p0.idleConnectionTestPeriod hibernate.c3p0.idle_test_period
c3p0.maxIdleTime hibernate.c3p0.timeout
c3p0.maxPoolSize hibernate.c3p0.max_size
c3p0.maxStatements hibernate.c3p0.max_statements
c3p0.minPoolSize hibernate.c3p0.min_size

❸ java資料庫連接池最大連接數最小連接數怎麼設置

最大連接數:這個連接池最多能有幾條連接,如果初始化的連接數沒有了專,用戶可以創建,屬但是要給個判斷不能超過最大連接數。
最小連接數:就是連接池初始化的連接(連接池初始化多少條連接)

// 設置最大連接數,(根據並發請求合理設置)。
config.setMaxTotal(100);
// 設置最大空閑連接數,(根據並發請求合理設置)
config.setMaxIdle(20);
// 多長空閑時間之後回收空閑連接
setMinEvictableIdleTimeMillis(60000);
// 設置最小空閑連接數或者說初始化連接數
config.setMinIdle(10);
// 設置最大等待時間
config.setMaxWaitMillis(500);
// 跟驗證有關
config.setTestOnBorrow(true);
// 跟驗證有關
config.setTestOnReturn(false);
// 啟動空閑連接的測試
config.setTestWhileIdle(false);

❹ java程序堆內存溢出錯誤如何解決

把eclipse的內存調大一點,在eclipse的目錄下面有一個eclipse.ini文件,打開調一下-XX:MaxPermSize=250m的大小!除了這點以外,如果你的代碼寫的有問題,那就是需要你自己改下代碼的!

閱讀全文

與javaidle相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接