диапазоны в int array?
- например, 1 поток работает с [0,50], второй только с [51,100]
- потом идет join обоих и хочется видеть результат работы в main потоке
или какая синхронизация требуется?
@shipilev не подскажешь?
Нет, так как память непонятно когда синхронизируется в таком случае. http://gee.cs.oswego.edu/dl/cpj/jmm.html
ForkJoinPool класс
с ячейками массива должны работать те же правила, что и со всем остальным: volatile write коммитит твои записи, volatile read — обновляет кеши и позволяет последующим чтениям видеть свежак
Есть потокобезопасные коллекции.
В этом сценарии никакой не требуется. Разные элементы массива по спеке выступают как независимые локации, поэтому потоки не интерферируют. Thread.join делает видимым всё сделанного в потоке тому, кто заджойнил, т.е. main-потоку.
Параллельные стримы иногда так и делают, кстати.
Обсуждают сегодня