Size: a a a

2020 October 26

D

Dima in learn.java
Andrey Pastushenko
Как я понял из дискуссии выше, если более читабельно и предсказуемо в плане поведения/результатов выполнения будет использовать цикл, то не надо выпендриваться знанием Stream и закладывать потенциальные баги?
@Tagir_Valeev @Bromles вот об этих неправильных выводах я и говорил
источник

T

Tagir in learn.java
Я в StreamEx добавил сахара с пулами, там можно явно сказать StreamEx.of(...).parallel(myCustomPool)..., и тогда в тот пул и уйдёт
источник

D

Dima in learn.java
Tagir
Я в StreamEx добавил сахара с пулами, там можно явно сказать StreamEx.of(...).parallel(myCustomPool)..., и тогда в тот пул и уйдёт
а в ваниле как это будет - скинешь код?
источник

D

Dima in learn.java
просто, чтобы ребята разницу увидели
источник

T

Tagir in learn.java
Dima
а в ваниле как это будет - скинешь код?
источник

T

Tagir in learn.java
Если у тебя пул уже есть, надо только в fjp.submit завернуть. Не отлично, но и не ужасно
источник

D

Dima in learn.java
final int parallelism = 4;
ForkJoinPool forkJoinPool = null;
try {
   forkJoinPool = new ForkJoinPool(parallelism);
   final List<Integer> primes = forkJoinPool.submit(() ->
       // Parallel task here, for example
       IntStream.range(1, 1_000_000).parallel()
               .filter(PrimesPrint::isPrime)
               .boxed().collect(Collectors.toList())
   ).get();
   System.out.println(primes);
} catch (InterruptedException | ExecutionException e) {
   throw new RuntimeException(e);
} finally {
   if (forkJoinPool != null) {
       forkJoinPool.shutdown();
   }
}
источник

D

Dima in learn.java
чтоб вы понимали, да
источник

D

Dima in learn.java
источник

T

Tagir in learn.java
Это весь код с созданием и завершением пула, не надо грязи
источник

B

Bromles in learn.java
Dima
@Tagir_Valeev @Bromles вот об этих неправильных выводах я и говорил
А что неправильного? Человек явно упомянул, что речь про ситуацию, когда циклы будут читаемее и понятнее. Если именно такая ситуация, то зачем пихать стримы?
источник

GV

Gukov Viktor in learn.java
Dima
final int parallelism = 4;
ForkJoinPool forkJoinPool = null;
try {
   forkJoinPool = new ForkJoinPool(parallelism);
   final List<Integer> primes = forkJoinPool.submit(() ->
       // Parallel task here, for example
       IntStream.range(1, 1_000_000).parallel()
               .filter(PrimesPrint::isPrime)
               .boxed().collect(Collectors.toList())
   ).get();
   System.out.println(primes);
} catch (InterruptedException | ExecutionException e) {
   throw new RuntimeException(e);
} finally {
   if (forkJoinPool != null) {
       forkJoinPool.shutdown();
   }
}
Сабмитить весь стрим в таску пула?
источник

D

Dima in learn.java
Tagir
Это весь код с созданием и завершением пула, не надо грязи
но ведь этот код грязный и шумный
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Tagir
Мне иногда кажется, что люди сильно много уделяют внимания каким-то высокоуровневым штукам вроде "надо изучить спринг и гибернейт", хотя в программах на самом деле работают простые ифы и циклы. А когда доходит до ифов и циклов, то не всякий продвинутый знаток спринга сходу нафигачит нормальный алгоритм. Поэтому тренировать важно не только перекладывание из базы в сокет, а именно умение запрограммировать логику
+
И ладно бы они действительно их нормально изучали. Но нет, они копипастят 2-3 проекта, а книги читать не хотят, даже, если им специально об этом говорить.
Еще крайность - задрачивают многопоточку и алгоритмы, но структуре кода внимание не уделяют
источник

D

Dima in learn.java
когда у реактивных стримов .publishOn(Scheduler)
источник

T

Tagir in learn.java
Dima
но ведь этот код грязный и шумный
Он запихивается в утилитный метод, на который тебе не надо смотреть. Когда ты подключаешь стороннюю библиотеку, там тоже всякие методы есть
источник

D

Dima in learn.java
Тагир, спасибо за твою либу и избавление от бойлерплейта, но ты не убедил меня, что стримы хорошо спроектированы для таких вещей
источник

D

Dima in learn.java
и критику стрим апи я думаю ты прекрасно знаешь и почему так сделали
источник

T

Tagir in learn.java
Вопрос в том для каких. По-быстрому решить одноразовую задачу, раскидав на треды - для этого параллельные стримы прекрасно подходят. Это лучший механизм из встроенных в джаву
источник

T

Tagir in learn.java
Без внешних библиотек. Кто писал что-то такое на джава 6, тот меня поймёт
источник