Очень простой подход к этой проблеме состоит в том, чтобы использовать ряд случайных свопов в списке.
В псевдокоде это будет выглядеть так:
do
r1 = randomPositionInList()
r2 = randomPositionInList()
swap elements at index r1 and index r2
for a certain number of times
SLSBs являются единственными, распараллелил из-за Контекста TX, Принципал связан с бобовым экземпляром, когда это называют. Эти бобы объединены и если макс. размер пула не достигнут, обрабатываются в отдельных потоках (Зависимый поставщика).
Если бы SLSBs были разработаны ориентированные на многопотоковое исполнение, каждый вызов был бы похож на сервлет doGet/Post с информацией о запросе, содержащей Контекст Tx, информацию о Контексте защиты и и т.д. Таким образом, по крайней мере, код выглядит чистым (зависимый разработчика).
Сеансовые объекты без сохранения состояния основной причины единственные поточный, должен сделать их хорошо масштабируемыми для контейнера. Контейнер может сделать большое упрощение предположений о среде выполнения. Вторая причина состоит в том, чтобы сделать жизнь легче для разработчика, потому что разработчик не должен волноваться ни о какой синхронизации или повторной входимости в его бизнес-логике, потому что боб никогда не будут называть в другом контексте потока.
Я помню обоснование, обсуждаемое в обзорах исходной спецификации EJB 1.0. Я посмотрел бы на раздел целей спецификации. См. http://java.sun.com/products/ejb/docs.html для списка спецификаций.