Почему JTable в Java Swing использует Vector в качестве параметров конструктора?
Кто-нибудь знает почему JTable
в Java Swing используйте Vector в качестве параметров конструктора: like JTable(Vector rowData, Vector columnNames)
, хотя Vector помечен как устаревшая коллекция. (Я знаю, что есть и другие варианты, но использовать Vector намного удобнее). Есть ли что-нибудь связанное с синхронизацией потоков?
1 ответ
В то время как Vector
не устарел и не устарел, это наследие оригинала DefaultTableModel
; позже он был "переоборудован для реализации List
интерфейс." Vector
синхронизируется, но его правильное использование для этой функции эффективно зависит от деталей реализации. Вместо этого используйте свойства согласованности памяти классов, чьи методы обеспечивают отношение " происходит до". Например, SwingWorker
, который реализует Future<T>
а также RunnableFuture<T>
, особенно удобно для надежного обновления модели таблицы в потоке диспетчеризации событий. Это устраняет необходимость избыточной синхронизации внутренней структуры данных модели.