Pull to refresh
14
0
Роман @Terran37

Программист

Send message
HTML, CSS и JavaScript — это отдельное огромное направление. В статье я хотел показать Vaadin как отдельный инструмент, а не сравнивать его возможности. Для многих он прекрасно подойдет для работы, при этом это только часть статьи, обратите на это внимание.
А Вы знаете, что сейчас процесс изучения «HTML, CSS и JavaScript» происходит сам собой, во время изучения данного FrameWork-а.
Вы правы. Речь действительно идет о cpu-bound задачах. Сейчас делаю «динамический» настройщик определения приоритетных ограничений для своих проектов, но он будет готов после нового года.
Я правильно понимаю, что этот функционал (StreamEx) в одной из Ваших статей описан?
Касательно вашей ссылки. Внимательно изучил материал и вот, что мне кажется в переписке. Курсивом буду выделять материал из ссылки.
«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 можно с Pool обходится как угодно. Создавать самому и/или будет использован общий ForkJoinPool.
Я определил для себя использование Fork/join как некий каркас в некоторых задачах, который отвечает за уровень параллелизма(в зависимости от нагрузки на процессоры, количества обрабатываемой информации и т.п.).
Stream Api использую для фильтрации и/или нахождения определенных элементов.
Выполнение задач происходит из пула потоков ForkJoinPool.
Тут вы вольны поступать тремя способами. Задать его самостоятельно, поставить по умолчанию(будет зависеть о количества процессоров), и использовать общий пул.
«C ExecutorService у нас была гарантия, что одна задача от начала и до конца выполняется одним потоком.
В Fork/Join работа с потоками претерпела сильные изменения. Задачи (ForkJoinTask’s) имеют уже другую семантику нежели потоки: один поток может выполнять несколько задач пересекающихся по времени.» из статьи http://habrahabr.ru/post/134183/. Посмотрите.
Все три класса придуманные. Они созданы для демонстрации части возможностей Framework-а.
countLimit, как и countProcessors используются для демонстрации возможных ограничений при расчетах. Показал, что можно ввести «ключи». Вы можете оперировать и мощностями(процессорами) и ограничителями в виде констант.
Stream — придуманное название класса.
Нет понимания зачем нужны потоки? Или просто плохой пример?
Данный пример фактически демонстрирует разбиение задачи на части и параллельный запуск этих подзадач. Т.е. обработка выполняется отдельно.
2

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