Хотя AWT должен быть потокобезопасным, на самом деле это не так. Поэтому я предлагаю, как и Swing, выполнить все манипуляции с графическим интерфейсом в потоке диспетчеризации событий AWT (EDT).
Для этой конкретной задачи, javax.swing.Timer
должен добиться цели. (Хотя он находится в пакете javax.swing
, в нем нет ничего специфичного для Swing.)
Кроме того, я бы настоятельно рекомендовал не расширять классы, если только вам это не нужно. Существует очень мало причин для расширения Thread
или Frame
(к сожалению, существует множество плохих примеров и старых руководств).