在AtomicInteger Java上的按位操作

我希望使用一个索引使用parallelStream读/写一个数组(并更新另一个数组)。

AtomicInteger不允许对该索引进行按位操作:

int[] j = {0};
ps.parallelStream().forEach(p -> {
    long k = next[j[0] << 1];                       
    for(; k < finalK; k += p)
        seg[(int) (k >>> S)] |= (1L << (k & BMASK));
    next[j[0] << 1] = (k - finalK);

    k = next[j[0] << 1 | 1];                        
    for(; k < finalK; k+= p) 
        seg[(int) (k >>> S)] |= (1L << (k & BMASK));
    next[j[0] << 1 | 1] = (k - finalK);
    j[0]++;
});

这是按顺序流而不是并行进行的。

评论