![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Не могу понять. Делаю отдельный поток, который считывает файл в отдельном потоке. При этом информация о процессе считывания отображается в диалоговом окне. В частности, при считывании возникают ошибки, которые я добавляю в JList с указанием строки, в которой произошла ошибка.
У меня почему-то получается, что одна и та же ошибка в одной и той же строке выдаётся по нескольку раз, хотя такого не должно мочь быть. Одно место, которое я не совсем понимаю, это вот это:
Я оформил диалоговое окно как implements ExceptionListener (мой интерфейс с методом exceptionOccured). При помощи invokeLater я вызываю его в оконном потоке. Вызов производится при помощи создания inner class. Так может быть, к моменту исполнения Runnable.run() значение переменной line может уже принимать другое значение, не то, которое было во время формирования? Или такого не может быть? |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Я попытался сделать явную проверку на повторы, вот так
и не обнаружил срабатываний. Может ли быть так, что ошибка возникает либо от того, что слишком часто вызывается invokeLater либо слишком часто вызывается дополнение JList? Хотя странно, invokeLater должен быть рассчитан на многопоточный вызов, а его работа должна заключаться в выстраивании команд в очередь.... Хм... |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
А сколько и каких листенеров у вас в списке?
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Этого класса вроде бы один.
Я заметил, что проблема исчезает, если вместо invokeLater использовать invokeAndWait. Такое впечатление, что проблема либо в самом списке (как будто он не успевает добавить один элемент, как ему добавляют другой), либо это просто глюк отображения. |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
А что делает метод exceptionOccured()?
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Вот такой сейчас у него код:
Может быть, что-то надо определить, как volatile или что-то типа этого? |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Честно говоря, у меня больше нет никаких идей. Нужно смотреть дебагером что там происходит. Или хотя бы лог какой-нибудь писать.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
А вот я как раз и написал класс DH, что расшифровывается Debug Helper, который, как раз и пишет лог. И я увидел, что никаких повторов в лог не попадает.
Иными словами, повторы появляются либо от неправильной работы внутри самого Свинга, либо они просто появляются чисто визуально на экране, из-за того, что что-то не успевает перерисоваться. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |