LINUX.ORG.RU

История изменений

Исправление 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