Должен ли я использовать два потока, которые могут убить друг друга? - PullRequest
0 голосов
/ 19 марта 2010

Я хотел бы иметь окно с простой формой (переключатели и т. Д.). Пользователи могут сделать там выбор и нажать кнопку «Отправить». В дополнение к этому я хотел бы установить некоторые временные ограничения. Более подробно, пользователь должен видеть, сколько секунд он / она еще имеет (поэтому должен быть таймер). Если ограничение по времени превышено, программа закроет окно и отправит выбор «по умолчанию».

Насколько я понимаю, мне нужно создать 2 потока для этого. Один из них будет отслеживать активность пользователя в окне (какой переключатель выбран и т. Д.).

Другой поток должен создать таймер, который каждую секунду проверяет оставшееся время и каким-то образом помещает эту информацию в окно.

Более того, эти два потока должны иметь возможность убивать друг друга. Например, если нажата кнопка «Отправить», первый поток убивает таймер. Или, если время превышено, второй поток (таймер) завершает работу первого процесса.

Это хорошая архитектура? Мне нужно ваше мнение, потому что я делаю такие вещи впервые.

1 Ответ

3 голосов
/ 19 марта 2010

Хотя это несколько неловко, два потока могут убивать друг друга.

Однако я не думаю, что вам нужны две темы.

Вы можете использовать таймер Swing (см. Этот учебник ) для запуска часов. Когда вы нажимаете «Отправить», вы можете остановить таймер, вызвав его метод stop (). Прелесть в том, что таймеры Swing работают в потоке GUI, поэтому вы не получаете головной боли параллелизма.

...