目前,我有一個while循環來監聽端口。當套接字接受連接時,將創建一個實現接口的任務,並將其分配給名爲o_allTaskThreads
的LinkedList
進行存儲。那是讓我控制住,阻止他們。如何控制大量的Java線程?
s = this.o_ServerSocket.accept();
System.out.println("connection established");
PortListenTask plt = new PortListenTask(s,this.o_config);
this.o_allTaskThreads.add(plt);
plt.run();
但我得到了一些問題,在這裏,如果PortListenTask
完成/完成或已異常terminaled,它不能更新LinkedList的o_allTaskThreads
,我該怎麼解決呢?謝謝。
您是否考慮過使用Java執行程序框架 - http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Executors.html它提供了線程池和其他有用的東西。 – fiction 2012-03-27 07:08:15
'不能更新linkedLIst o_allTaskThreads' - 爲什麼不?您應該點擊列表,重複它以查找條目並將其刪除。如果另一個線程/任務可能正在訪問它,你應該採取行動 - 設置一些inernal狀態爲'斷開',並將其放在一個定時器隊列中,以便最終刪除它的最後一個參考... – 2012-03-27 07:52:09