只是learnd的SwingWorker
並有一個問題
(我有搜索答案,這一點,但非專門解決這個設置)的Java SwingWorker類從doInBackground()和HOWTO推出可運行通知事件調度線程
林創建小型服務器,只有最多同時2-3個連接。
林使用Jframe
具有內部類SwingWorker
在的SwingWorker doInBackground()
我有:
while(true) {
Socket client_socket = listen_socket.accept();
Connection con = new Connection(client_socket, "name");
Future<Connection> future = es.submit(con , con);
tasks.add(future);
}
的Connection
是runnable
和聲明爲SwingWorker
一個子類。
在runnable
完成之前,它在SQL中寫入一個條目。
那麼如何才能在它死亡之前運行發送一個單挑到Jframe
事件調度線程。
和Jframe
將檢查新條目的SQL並將其顯示給用戶。
什麼是最好的事:
1 - 創建一個接口女巫所有可運行可以發送郵件到Jframe
事件調度線程。
2 - 使用SwingWorker
insted的的runnables
所有新連接,並具有Done()
呼叫使用服務器SwingWorker
調用方法Jframe
方法EventQueue.invokeLater..
3 - 或使用一個PropertyChangeListener(不知何故沒有確定)
4 - 讓每個可運行參數的參考號爲Jframe
,並且做EventQueue.invokeLater..
我的服務器SwingWorker正在使用它的'done()',當服務器關閉。我從'doInBackground()'啓動的所有'runnables'怎麼樣,他們沒有'done()'機制 – Erik
我認爲他已經知道使用SwingWorker。他的問題超出了SwingWorker使用的基礎。 –
@Erik:他們是可運行的還是未來?如果是後者,那麼他們確實有完善的方法,特別是如果FutureTask或類似的東西。 –