Pull to refresh

Comments 12

Нет понимания зачем нужны потоки? Или просто плохой пример?
Я знаю что такое потоки. Я не понял что происходит в вашем примере. Зачем там countLimit? Что за класс Stream( это родной явовский класс из 8-й явы или ваше собственное изобретение)? В общем вообще ничего не понял. Чем вам не нравится например ExecutorService?
countLimit, как и countProcessors используются для демонстрации возможных ограничений при расчетах. Показал, что можно ввести «ключи». Вы можете оперировать и мощностями(процессорами) и ограничителями в виде констант.
Stream — придуманное название класса.
Все три класса придуманные. Они созданы для демонстрации части возможностей Framework-а.
«C ExecutorService у нас была гарантия, что одна задача от начала и до конца выполняется одним потоком.
В Fork/Join работа с потоками претерпела сильные изменения. Задачи (ForkJoinTask’s) имеют уже другую семантику нежели потоки: один поток может выполнять несколько задач пересекающихся по времени.» из статьи http://habrahabr.ru/post/134183/. Посмотрите.
Fork/Join… Оно стартует новый процесс на каждый поток выполнения?
Данный пример фактически демонстрирует разбиение задачи на части и параллельный запуск этих подзадач. Т.е. обработка выполняется отдельно.
Оно выделяет свободный поток на задачу, которую успел ухватить из внутренней очереди (очень неточное определение на самом деле. Вообще, лучше почитать документацию и посмотреть пару лекций, скажем, Шипилева). Сама фраза «стартует новый процесс на каждый поток» звучит страшно.
Вот и мне страшно, если оно стартует процессы. Если там просто пул потоков-воркеров, то норм.
Выполнение задач происходит из пула потоков ForkJoinPool.
Тут вы вольны поступать тремя способами. Задать его самостоятельно, поставить по умолчанию(будет зависеть о количества процессоров), и использовать общий пул.
Sign up to leave a comment.

Articles