Как получить настроенный синхронизированный список в Java? - PullRequest
1 голос
/ 06 июля 2011

У меня есть один настраиваемый список MyList, который расширяет ArrayList, например:

class MyList extends ArrayList<SomeParticularItem>{
   [some methods...]
}

Поскольку у меня есть одновременное чтение и запись в список, я хочу синхронизировать его:

MyList mylist = (MyList) Collections.synchronizedList(new MyList());

Кажется, все в порядке .jar - это сборка. Затем во время выполнения я получаю:

java.util.Collections$SynchronizedRandomAccessList cannot be cast to MyList

Есть ли лучший способ (есть ли вообще какой-либо способ) получить синхронизированный список из списка, который наследуется от некоторого java.util.List?

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Ну, почему бы не сделать MyList синхронизированным, просто используйте интерфейс List List mylist = Collections.synchronizedList (new MyList ());

Edit: Конечно, вы можете позволить MyList расширять Vector, поскольку все методы Векторы уже синхронизированы, вы сохраняете некоторую работу.

1 голос
/ 06 июля 2011

Самый простой способ сделать это - расширить Vector вместо ArrayList. Вы также можете синхронизировать методы MyList самостоятельно, если хотите сохранить его как ArrayList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...