Предположительно, вы предлагаете разделить массив и разрешить доступ к каждому разделу только одному потоку.Это разумный подход без проблем.
На самом деле, это делает инфраструктура форка / соединения и может быть применима к тому, что вы пытаетесь достичь.
Например, посмотрите на javadocs для java.util.concurrent.RecursiveAction , который показывает пример разбиения массива для его сортировки.В двух словах, массив разделяется до тех пор, пока размер раздела не станет ниже порогового значения.Каждый из последующих разделов затем разделяется снова (т.е. рекурсивно).
Код выглядит следующим образом:
class SortTask extends RecursiveAction {
final long[] array; final int lo; final int hi;
SortTask(long[] array, int lo, int hi) {
this.array = array; this.lo = lo; this.hi = hi;
}
protected void compute() {
if (hi - lo < THRESHOLD)
sequentiallySort(array, lo, hi);
else {
int mid = (lo + hi) >>> 1;
invokeAll(new SortTask(array, lo, mid),
new SortTask(array, mid, hi));
merge(array, lo, hi);
}
}
}