01-15-2015, 11:05 PM
Donatte Написал:FastList -> ArrayList
FastMap -> HashMap
Javolution это пережиток. Избавляйтесь от него.
+1
И ещё обязательно следует учитывать потоко-безопасные варианты коллекций.
Вот например в стандартных коллекциях, имплементации которых не предназначены для конкурентных операций бросают исключение ConcurrentModificationException. Этот же треклятый Javolution - нет.
В конкурентной среде, коллекции Javolution себя ведут неадекватно и неопределенно.
У FastMap есть возможность сделать его "потоко-безопасным", посредством вызова метода shared(), и это нам хорошо видно. Вместо такого следует ставить ConcurrentHashMap (или аналог).
У FastList конечно-же такого нет, по понятным причинам. На все сто я не уверен, есть ли в нём копирование при записи, но как-то ему удается иногда сохранять работоспособность в конкурентной среде. А порой он отмачивал ещё те приколы, выводя из строя полсервера.
Так вот, трудность в случае замены FastList (FastMap без shared туда же) заключается в необходимости дополнительного анализа кода. Как этот лист используется, кем и откуда. Необходимо установить факт конкурентного доступа и в этом случае предпринять меры (локи, синхронизация, CopyOnWriteArrayList или аналог).
Ну или забить на это и ожидать возбуждений CME. ;D
Ну в общих чертах примерно так. Работы не мало, но избавляться от этого экскремента нужно.