История изменений
Исправление CARS, (текущая версия) :
Как я понял, всё упирается в пересылку данных между потоками*, а GUI здесь — просто частный случай. Для реализации безопасного межпоточного взаимодействия существует множество средств. Можно сделать ставку на потокобезопасные коллекции. Например добавьте в обработчик блокирующую очередь** (java.util.concurrent.BlockingQueue
). Тогда изнутри метода actionPerformed
можно что-нибудь положить в очередь обработчика, а сам обработчик, вызывая метод очереди take
, эти данные получит. Но получит только в том случае, если они есть, иначе будет ждать, что вероятно и есть желаемое поведение.
________________
* http://en.wikipedia.org/wiki/Producer–consumer_problem
** http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html
Исходная версия CARS, :
Как я понял, всё упирается в пересылку данных между потоками*, а GUI здесь — просто частный случай. Для реализации безопасного межпоточного взаимодействия существует множество средств. Можно сделать ставку на потокобезопасные коллекции. Например добавьте в обработчик блокирующую очередь** (java.util.concurrent.BlockingQueue
). Тогда изнутри метода actionPerformed
можно что-нибудь положить в очередь обработчика, а сам обработчик, вызывая метод очереди take
, эти данные получит. Но получит только в том случае, если они есть, иначе будет ждать, что вероятно и есть желаемое поведение.
________________
* http://en.wikipedia.org/wiki/Producer–consumer_problem
** http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html