Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

  DDamager написал 10.02.2019 в 15:29:

когда мне первый раз надо было массив отсортировать на паскале еще в школе то я закодил пузырек даже не зная что это так называется

это рили самое простое что можно придумать

Гений !

Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение
  DDamager написал 10.02.2019 в 15:29:

когда мне первый раз надо было массив отсортировать на паскале еще в школе то я закодил пузырек даже не зная что это так называется

это рили самое простое что можно придумать

любому человеку не знающему стандартные сортировки если дать задачу наалгоритмить сортировку без вспомогательного массива, то он с 60% шансом выдаст пузырёк, 40% вставку

Поделиться сообщением


Ссылка на сообщение

Откуда ты это знаешь  monkas


Russia.png.ea080e101222d708d08842dae4ccc684.png USA.png.9b863586cd992fb91bf92ed1de03e4cc.png Israel.png.f27d10a4455f05cd161a8c2c52b8b5e1.png

Поделиться сообщением


Ссылка на сообщение
  Rooster написал 10.02.2019 в 16:47:

Откуда ты это знаешь  monkas

он проводил тесты на маленьких гномиках в своем подвале

TheDeadSkin, Kant, hira88 и 2 другим понравилось это

 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

зашел в твитер а там (если аже iq это пишет, то дела у раста очень плохи)

https://i.imgur.com/E3Emlzi.png

Поделиться сообщением


Ссылка на сообщение
  hira88 написал 11.02.2019 в 00:27:
  Показать содержимое

это фотожоп, нас не обманешь

 

тебя же забанили везде, сиди в спутнике и не вкидывай дезинфу

Поделиться сообщением


Ссылка на сообщение
Баттхерт на крупный украинский портал для разрабов. Не буду скрывать — я о DOU. 

Мобильная версия — без мата не обойтись. Мало того, что пользоваться ею сложновато, так еще и страница с редактированием информации о профиле просто пиздец.

Как же долго я искал где сменить аватарку, пока не подумал что надо отзумить, адаптация сайта ахуенная.

Эти капельки табов это вообще 2004 — особенно рофл с зеркальным эффектом.

Неужто крупный ИТ-ресурс не может сделать адекватный адаптивный дизайн? 

7498c486848884943902b4cd63b2dc8c.jpg


 

Жиза для любопытных

 

Поделиться сообщением


Ссылка на сообщение
  hira88 написал 11.02.2019 в 00:27:
  Показать содержимое

вообще-то foreach это нестандартное расширение от visualc++ и даже microsoft не рекомендует его использовать


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

откуда ты это взял?

в мсвс+++ нет такого

 

в плюсах вместо этого просто for (T &elem : collection) есть с обычным фор

Поделиться сообщением


Ссылка на сообщение

Как же у вас тут душно поцаны


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение
  Zellar написал 11.02.2019 в 06:15:

Неужто крупный ИТ-ресурс не может сделать адекватный адаптивный дизайн? 

а нахуя? они и так крупные, им незачем этим привлекать  аудиторию


 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

Тут же есть эксперты жавы.

 

Вопрос

Thread thread = Thread.currentThread();
        System.out.println("BaS" + thread.toString());
        CompletableFuture.supplyAsync(() -> {
            System.out.println("InAs" + Thread.currentThread().toString());
            return "E";
        }).whenComplete((s, throwable) -> {
            System.out.println("OutAs" + Thread.currentThread().toString());
        });

Почему whenComplete иногда запускается в BaS треде как надо, а иногда в форкджоин пуле.

BaSThread[task-4,5,main]
InAsThread[ForkJoinPool.commonPool-worker-2,5,main]
BaSThread[task-6,5,main]
InAsThread[ForkJoinPool.commonPool-worker-2,5,main]
OutAsThread[ForkJoinPool.commonPool-worker-2,5,main]
BaSThread[task-1,5,main]
InAsThread[ForkJoinPool.commonPool-worker-5,5,main]
OutAsThread[ForkJoinPool.commonPool-worker-5,5,main]
OutAsThread[task-4,5,main]

Например. Только один OutAsThread[task-4,5,main] вернулся в тред родитель. Вчом смысл тогда whenComplete от whenCompleteAsync когда у первого нет гарантии синхронного поведения.

Поделиться сообщением


Ссылка на сообщение
(изменено)
  TheDeadSkin написал 11.02.2019 в 06:40:

откуда ты это взял?

в мсвс+++ нет такого

 

в плюсах вместо этого просто for (T &elem : collection) есть с обычным фор

 

переносил билд с++ кода на линукс с винды и менял for each (item in collection) на for (item : collection)


Изменено пользователем DDamager

Поделиться сообщением


Ссылка на сообщение

Ладно я понял как запускаются методы CompletableFuture, но я бы сделал иначе или расширил, чтобы можно было создавать ранаблы и колаблы блокирующие родительский поток хотя бы.

Поделиться сообщением


Ссылка на сообщение
  Index написал 11.02.2019 в 10:30:

Ладно я понял как запускаются методы CompletableFuture, но я бы сделал иначе или расширил, чтобы можно было создавать ранаблы и колаблы блокирующие родительский поток хотя бы.

ну так понял - поясни


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
(изменено)
  Index написал 11.02.2019 в 09:37:

Тут же есть эксперты жавы.

 

Вопрос

Thread thread = Thread.currentThread();
        System.out.println("BaS" + thread.toString());
        CompletableFuture.supplyAsync(() -> {
            System.out.println("InAs" + Thread.currentThread().toString());
            return "E";
        }).whenComplete((s, throwable) -> {
            System.out.println("OutAs" + Thread.currentThread().toString());
        });

Почему whenComplete иногда запускается в BaS треде как надо, а иногда в форкджоин пуле.

BaSThread[task-4,5,main]
InAsThread[ForkJoinPool.commonPool-worker-2,5,main]
BaSThread[task-6,5,main]
InAsThread[ForkJoinPool.commonPool-worker-2,5,main]
OutAsThread[ForkJoinPool.commonPool-worker-2,5,main]
BaSThread[task-1,5,main]
InAsThread[ForkJoinPool.commonPool-worker-5,5,main]
OutAsThread[ForkJoinPool.commonPool-worker-5,5,main]
OutAsThread[task-4,5,main]

Например. Только один OutAsThread[task-4,5,main] вернулся в тред родитель. Вчом смысл тогда whenComplete от whenCompleteAsync когда у первого нет гарантии синхронного поведения.

Показать больше  

в твоих логах не понятно что OutAsThread[task-4,5,main]

относится к BaSThread[task-4,5,main]

передавай id какойнибудь чтобы можно было отслеживать что это один и тот же проход

вполне может быть что OutAsThread[task-4,5,main] - это уже освободившийся первый 

 

 

собственно - https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html

погуглить то перед тем как задавать вопрос, несудьба?

  Index написал 11.02.2019 в 10:30:

но я бы сделал иначе или расширил, чтобы можно было создавать ранаблы и колаблы блокирующие родительский поток хотя бы.

что блять


Изменено пользователем Just.Doit

 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
  DDamager написал 11.02.2019 в 10:03:

 

  TheDeadSkin написал 11.02.2019 в 06:40:
 

переносил билд с++ кода на линукс с винды и менял for each (item in collection) на for (item : collection)

 

хм, TIL

 

я думал там был бы такой же синтакс как у сшарповского "foreach" и ничего в доках не находил

плюс в оригинальном посте тоже было foreach, а не for each

Поделиться сообщением


Ссылка на сообщение

 

 

  Just.Doit написал 11.02.2019 в 10:56:
что блять
 
 CompletableFuture.supplyAsync(() -> {
            System.out.println("InAs" + Thread.currentThread().toString());
            return "E";
        }).whenComplete((s, throwable) -> {
            for (int i = 0; i < 100; i++) { //чтобы этот ранабл
                list.add(i);
            }
        });
        //блокировал этот поток что не понятно то блять
        list.forEach(System.out::println); //ConcurentModification

 

 

  choojoykin написал 11.02.2019 в 10:44:
ну так понял - поясни
 

Ну таск выполняется CompletableFuture без асинхронности выполняется либо в потоке из цепочки выше, либо в потоке get либо в потоке где он родился.

У меня было 2 кондишона.

        CompletableFuture.supplyAsync(() -> {
        })
        .whenComplete((s, throwable) -> { //если лямбда выше успела выполниться до создания этой, то эта биндилась к основному потоку, если же лямбда выше ещё выполняется, то к ней биндится эта
        });

Поделиться сообщением


Ссылка на сообщение
  Index написал 11.02.2019 в 11:09:

 

  Just.Doit написал 11.02.2019 в 10:56:
 
 CompletableFuture.supplyAsync(() -> {
            System.out.println("InAs" + Thread.currentThread().toString());
            return "E";
        }).whenComplete((s, throwable) -> {
            for (int i = 0; i < 100; i++) { //чтобы этот ранабл
                list.add(i);
            }
        });
        //блокировал этот поток что не понятно то блять
        list.forEach(System.out::println); //ConcurentModification

 

 

  choojoykin написал 11.02.2019 в 10:44:
 

Ну таск выполняется CompletableFuture без асинхронности выполняется либо в потоке из цепочки выше, либо в потоке get либо в потоке где он родился.

У меня было 2 кондишона.

        CompletableFuture.supplyAsync(() -> {
        })
        .whenComplete((s, throwable) -> { //если лямбда выше успела выполниться до создания этой, то эта биндилась к основному потоку, если же лямбда выше ещё выполняется, то к ней биндится эта
        });
Показать больше  

photo-189498.jpg?_r=1543667877


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
  Index написал 11.02.2019 в 11:09:

 

  Just.Doit написал 11.02.2019 в 10:56:
 
 CompletableFuture.supplyAsync(() -> {
            System.out.println("InAs" + Thread.currentThread().toString());
            return "E";
        }).whenComplete((s, throwable) -> {
            for (int i = 0; i < 100; i++) { //чтобы этот ранабл
                list.add(i);
            }
        });
        //блокировал этот поток что не понятно то блять
        list.forEach(System.out::println); //ConcurentModification

 

 

  choojoykin написал 11.02.2019 в 10:44:
 

Ну таск выполняется CompletableFuture без асинхронности выполняется либо в потоке из цепочки выше, либо в потоке get либо в потоке где он родился.

У меня было 2 кондишона.

        CompletableFuture.supplyAsync(() -> {
        })
        .whenComplete((s, throwable) -> { //если лямбда выше успела выполниться до создания этой, то эта биндилась к основному потоку, если же лямбда выше ещё выполняется, то к ней биндится эта
        });
Показать больше  

чтобы лямбда внутри фьючи не может блокировать исходный поток сама по себе. можно в исходном потоке написать блокировку которая будет ждать выполнения фьючи

 

зачем нужен отдельно метод whenComplete (в отличае от его async версии ) - наверное кейс какой-то такой - у тебя забит пул, и ты в качестве оптимизации хочешь чтобы в текущем треде тогда вычислялась фьюча. а если тебе такая оптимизация наоборот ухудшит перформанс и хочешь чтобы всегда всё вбрасывалось в пул - пишешь async версию

 

на самом деле реальный кейс использования тоже интересен, найдешь ссылку - скинь. на SO за 5 паервых ссылок я чето не нашел


 

очень крутые котейки


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...