Brian Goetz在http://www.ibm.com/developerworks/java/library/j-jtp03048.html上发表了一篇关于fork-join的好文章。在文章中,他使用fork-join机制列出了一个归并排序算法,其中他同时对数组的两侧进行排序,然后合并结果。
该算法同时对同一数组的两个不同部分进行排序。为什么不需要AtomicIntegerArray或其他机制来维护可见性?有什么保证一个线程会看到另一个线程所做的写操作,还是这是一个微妙的错误?作为后续问题,Scala的ForkJoinScheduler是否也提供此保证?
谢谢!
该算法同时对同一数组的两个不同部分进行排序。为什么不需要AtomicIntegerArray或其他机制来维护可见性?有什么保证一个线程会看到另一个线程所做的写操作,还是这是一个微妙的错误?作为后续问题,Scala的ForkJoinScheduler是否也提供此保证?
谢谢!