Я знаю, что считалось безопасным вызывать repaint()
и несколько других выбранных методов из любого потока даже с помощью модели Swing threading, однако мне недавно сообщили в комментарии, что это не так.
Google обнаружил много старых обсуждений, в которых говорится, что это безопасно, но совсем недавно. Все официальные ссылки, которые говорили, что это безопасно, похоже, исчезли, и я обнаружил, что несколько человек на разных форумах обсуждали, как это было безопаснее.
Я не могу найти что-либо официальное, чтобы подтвердить, есть ли это или нет, - и мне очень хотелось бы увидеть что-то, объясняющее логику изменения, если оно было изменено. Учитывая, насколько сильно это может повредить существующие приложения, кажется, что очень странная функция удалена.
На самом деле я ищу ссылку на официальную ссылку (т.е. Javadoc, oracle tutorial или ссылку на исходный код), говорящие, являются ли эти методы безопасными или недоступными для вызова из любого потока.
Для справки этот вопрос здесь:
Безопасно использовать Component.repaint() вне EDT?
Дает цитату из недавно исчезнувшей страницы Sun, в которой говорится:
Следующие методы JComponent безопасны для вызова из любого потока: repaint(), revalidate() и invalidate(). Методы repaint() и revalidate() обрабатывают запросы очереди для потока диспетчеризации событий для вызова paint() и validate() соответственно.
Это соответствует моему пониманию, но я не могу найти эту страницу или любую подобную страницу сейчас, и я видел неподтвержденные слухи от нескольких людей, говорящих, что это уже не безопасно. Но, с другой стороны, я не могу найти ничего определенного, говоря, что эта функция изменилась.
Изменить заметки
Что может помочь решить этот вопрос, является официальным выражением Oracle о изменениях в обработке потоков Swing. Я нашел "изменения в Java 7", но об этом вообще не упоминал, ни одна из этих страниц не упоминает потоки или EDT каким-либо образом:
http://docs.oracle.com/javase/7/docs/technotes/guides/swing/enhancements-7.html
http://docs.oracle.com/javase/7/docs/technotes/guides/awt/enhancements-7.html