Information
- Rating
- Does not participate
- Location
- Рязань, Рязанская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Software Architect
Lead
People management
Development management
Project management
Java
SQL
Database
High-loaded systems
Designing application architecture
OOP
«Is it possible to specify a custom thread pool for Java 8 parallel stream? I can not find it anywhere.» — вопрос по созданию пула.
Далее приводится пример, где в раздельных потоках происходит запуск, ну и соответственно описывают проблему.
Далее нам пишут о том, что мы можем создать свой собственный пул и фактически работать с ним. Вот эта часть: «What do you mean by custom thread pool? There is a single common ForkJoinPool but you can always create your own ForkJoinPool and submit requests to it».
Вот тут выскажу свое мнение.
Я определил, что сейчас есть возможность использовать 3 варианта
а) создавать свой
б) поставить по умолчанию (будет зависеть от количества процессоров)
в) или будет использоваться общий пул(с jdk8)
дополнительно можно настроить уровни параллелизма(однозначно их не стоит ставить более количества процессоров, я бы сказал ядер)
Вернемся к Вашей ссылке.
далее приводится ссылка на проблему с lock-ами(нужно исследовать).
Далее еще ответы:
«There actually is a trick how to execute a parallel operation in a specific fork-join pool. If you execute it as a task in a fork-join pool, it stays there and does not use the common one.» и далее пример по созданию
Далее просят link на то, что «But is it also specified that streams use the ForkJoinPool».
Смотрим ссылку и в ней находим следующее:
But it is mentioned in the ForkJoin documentation at the bottom of docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
Читаем вот эту часть(документация):
Besides using the fork/join framework to implement custom algorithms for tasks to be performed concurrently on a multiprocessor system (such as the ForkBlur.java example in the previous section), there are some generally useful features in Java SE which are already implemented using the fork/join framework. One such implementation, introduced in Java SE 8, is used by the java.util.Arrays class for its parallelSort() methods. These methods are similar to sort(), but leverage concurrency via the fork/join framework. Parallel sorting of large arrays is faster than sequential sorting when run on multiprocessor systems.
Делаю вывод, что parallelSort() как раз использует «вилку».
Возможно, что Вы добавите дополнительную информацию или поправите меня. Спасибо.
Я определил для себя использование Fork/join как некий каркас в некоторых задачах, который отвечает за уровень параллелизма(в зависимости от нагрузки на процессоры, количества обрабатываемой информации и т.п.).
Stream Api использую для фильтрации и/или нахождения определенных элементов.
Тут вы вольны поступать тремя способами. Задать его самостоятельно, поставить по умолчанию(будет зависеть о количества процессоров), и использовать общий пул.
В Fork/Join работа с потоками претерпела сильные изменения. Задачи (ForkJoinTask’s) имеют уже другую семантику нежели потоки: один поток может выполнять несколько задач пересекающихся по времени.» из статьи http://habrahabr.ru/post/134183/. Посмотрите.
Stream — придуманное название класса.