ThreadPool 關鍵欄位protected Vector pool; // 空閒執行緒隊列
protected MonitorRunnable monitor; // 監控執行緒
protected int maxThreads = 100; // 最大執行緒數
protected int minSpareThreads = 10; // 最小空閒數
protected int maxSpareThreads = 50; // 最大空閒數
protected int currentThreadCount; // 當前總執行緒數
protected int currentThreadsBusy; // 忙碌執行緒數
protected boolean stopThePool; // 關閉標誌
start()adjustLimits()。openThreads(minSpareThreads)。MonitorRunnable 監控執行緒。runIt(Socket cs)maxThreads,擴充 minSpareThreads 個執行緒。wait() 阻塞等待空閒執行緒(可被 notifyAll() 喚醒)。ControlRunnable,標記為忙碌,呼叫其 runIt(cs) 處理 Socket。returnController(ControlRunnable)notifyAll() 喚醒等待中的提交執行緒。MonitorRunnableWORK_WAIT_TIMEOUT (60秒) 喚醒一次。checkSpareControllers():若空閒數 > maxSpareThreads,終止多餘執行緒並從隊列移除。shutdown()stopThePool=true,終止監控執行緒。notifyAll() 喚醒所有等待執行緒拋出 IllegalStateException。(原文提供完整 ThreadPool、ControlRunnable、MonitorRunnable 實作,此處略去重複,核心邏輯如上。)
maxThreads。java.util.concurrent.ThreadPoolExecutor,功能更完善、經過充分測試。