2009-03-26 4 views
1

Существует много методов, которые вы не должны вызывать, если вы не находитесь в потоке событий AWT. Обычно это методы, которые каким-то образом управляют пользовательским интерфейсом.Является ли Component.getGraphicsConfiguration потоком безопасным?

Это в случае с getGraphicsConfiguration()) компонента? Это только геттер, но он, похоже, вызывает тупик, если поток потока ожидает в потоке, вызывающем этот метод.

В то время как решение тупика довольно тривиально (избегайте использования wait или synchronize в потоке событий), следует ли мне называть getGraphicsConfiguration в Runnable, переданном SwingUtilities.invokeLater (...) или invokeAndWait (...)?

ответ

1

AWT нить-безопасность (обязательно) сломан. Только не приближайся к нему. Оставайтесь на прямой AWT EDT

Также обратите внимание, что только потому, что метод находится в java.awt.Component, это не означает, что объект (или объект, на который он ссылается) не находится в Swing, и поэтому действительно даже не претендует на то, безопасно. (Enough nots?)

+0

er ... так что вы говорите «да», только используйте метод, когда я нахожусь в потоке событий? –

+0

Я говорю, что было бы очень желательно сделать это. –

Смежные вопросы