Я кодирую JTable, способный обрабатывать частые обновления. Обычно этот JTable имеет ~ 1000 строк данных, и некоторые столбцы будут часто обновляться, потому что их значения выводятся из цены акций, которая сильно меняется в часы работы рынка.
Проблема, с которой я сталкиваюсь, заключается в том, что при обновлении большого количества строк (например, 80%) JTable становится очень медленным в течение 20-30 секунд или около того, что профилировщик показывает, что поток EDT очень занят, обрабатывая Таблица измененных звонков.
Я пытаюсь свернуть изменения
1) подавление fireTableCellUpdated
2) Если есть изменения <= 50 строк, вызовите fireTableRowUpdate для отдельных строк
3) Если имеется> 50 строк изменений, вызывается fireTableDataChanged для всей таблицы.
Это лучше, но все еще медленно, когда есть частые обновления, я понимаю, что fireTableDataChanged также медленный. Поэтому, если обновления данных происходят достаточно часто, fireTableDataChanged будет вызываться часто, а графический интерфейс будет ощущаться вялым.
Может ли кто-нибудь, имеющий опыт в этой области, порекомендовать наилучшую практику использования fireTableRowsUpdate,
fireTableDataChanged и fireTableStructureChanged, чтобы улучшить живость и производительность графического интерфейса? Если у вас есть указатели на примеры кодов, которые решают эту проблему, это будет еще лучше.
Большое спасибо
Энтони Си