我有一個對象用於使用多線程方法更新數據庫。Java獲得線程實例的數量
現在,我不想通過壓倒更新嘗試來崩潰我的db連接,並且想要等待我擁有一定數量的線程。
我的課implements Runnable
叫updateUnmarked
。
現在,我只希望推出一個新的線程,如果我的線程數是< X
Thread.getAllStackTraces().keySet().size()
似乎並沒有工作,還有以下似乎並沒有解決這個問題:
public static int getLiveThreads(){
ThreadMXBean bean = null;
bean = ManagementFactory.getThreadMXBean();
return bean.getThreadCount();
}
兩個只返回8 ...但我肯定有超過8個線程。
任何想法如何做到這一點?
謝謝!
我認爲它會更容易,如果你只是使用的旗語臨界區部分(DB使用),所以你創造儘可能多你需要的線程和沒有信號量的線程將等待它。另外,如果您使用大量的數據庫連接,可能像支持連接池的c3p0這樣的數據庫連接管理器可能會很有用(因此您不必持續打開和關閉連接,因爲它通常是繁重的操作)。 – SJuan76 2013-02-09 19:52:25
只需使用固定大小的線程池 – artbristol 2013-02-09 20:01:14
@artbristol:好點。這裏是一個很好的鏈接與例子http://www.javacodegeeks.com/2013/01/java-thread-pool-example-using-executors-and-threadpoolexecutor.html – 2013-02-09 20:21:21