Может кто-нибудь объяснить, что такое Fork / Join?
Fork Join - это новый фреймворк, который имеет более простой в использовании API для параллельного алгоритма "разделяй и властвуй".
Допустим, у вас есть долго выполняющаяся задача, которая, в данном случае, имеет сложный алгоритм. Вы хотите разделить большие задачи и теперь работать над этими двумя задачами. Теперь допустим, что эти две задачи все еще слишком большие, вы разделите каждую из них на две задачи (в данный момент их четыре).
Вы будете продолжать это, пока каждая задача не достигнет приемлемого размера, и вызовете алгоритм. Важно знать, что вызов каждой задачи выполняется параллельно. Когда задача завершена, она объединяется с другой задачей, на которую она была вилочной, и консолидирует результаты.
Это будет продолжаться до тех пор, пока все задачи не будут объединены и не будет возвращена одна задача.
Check these links -
http://www.artima.com/forums/flat.jsp?forum=276&thread=219155
http://lambda-the-ultimate.org/node/3521
http://www.ibm.com/developerworks/java/library/j-jtp11137.html
Допустим, у вас есть коллекция вещей, которые нужно обработать. У вас есть несколько потоков, которые могут захватывать подмножества этой коллекции и обрабатывать их. Все они делают это одновременно (часть fork), а затем ждут, пока последний поток закончит (часть join), прежде чем вернуться.