только что изучил SwingWorker
и у меня есть вопрос
(я ищу ответ на этот вопрос, но конкретно не рассматриваю эту настройку)
Я создаю небольшой сервер, который будет иметь максимум 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
вместо runnables
для всех новых подключений и Done()
вызывать метод на сервере SwingWorker
, который вызывает метод в Jframe
, используя EventQueue.invokeLater..
3 - или использовать PropertyChangeListener (как-то не уверен)
4 - Пусть каждый runnables имеет ссылку s на Jframe
и делает EventQueue.invokeLater..