Size: a a a

2020 June 02

QH

Quantum Harmonizer in learn.java
там, правда, просрали некоторое количество полимеров: чтоНибудьAsync без явного указания экзекьютора создаёт новый поток, за это прям по лапкам бить надо
источник

l

lem0nify in learn.java
А в плане разделения по потокам? Один CompletableFuture = один поток? Или ближе к корутинам?
источник

QH

Quantum Harmonizer in learn.java
lem0nify
А в плане разделения по потокам? Один CompletableFuture = один поток? Или ближе к корутинам?
простой ответ — ближе к корутинам
источник

QH

Quantum Harmonizer in learn.java
это те же фьючи, только с человеческим интерфейсом
источник

l

lem0nify in learn.java
Так а фьючи не потоки?
источник

QH

Quantum Harmonizer in learn.java
lem0nify
Так а фьючи не потоки?
Нет.
источник

l

lem0nify in learn.java
Как сложно. Вот сколько читал о них, так и не разобрался, насколько сильно оно от потоков отличается. В официальных гайдах по тому же котлину прям вот супер прозрачно и ясно написано, что корутины НЕ ПОТОКИ и почему. А по фьючерам и комплетаблфьючерам джавы инфа на этот счёт какая-то расплывчатая и недосказанная.
источник

l

lem0nify in learn.java
Вся инфа, что я находил, по крайней мере.
источник

l

lem0nify in learn.java
Спасибо за пояснения, в общем.
источник

QH

Quantum Harmonizer in learn.java
Вот здесь про многопоточку из core Java (и Android SDK), про фьючи тоже немного есть.
источник

QH

Quantum Harmonizer in learn.java
Процессы и потоки

Наконец порезал видео с весенней Android Academy. Основы многопоточки в Java и Android.

youtu.be/TWlhCraPd3Q
источник

l

lem0nify in learn.java
Там не Android-specific инфа?
источник

QH

Quantum Harmonizer in learn.java
lem0nify
Там не Android-specific инфа?
Там есть Android-specific (AsyncTask), но можно промотать. Таймкоды в описании.
источник

l

lem0nify in learn.java
Понял.
источник

QH

Quantum Harmonizer in learn.java
Вот диапазон для просмотра)
05:30 new Thread(...).start()
08:13 interrupt
09:14 Executor(Service)
13:18 Future
15:03
источник

l

lem0nify in learn.java
Так это, извиняюсь, что снова дёргаю. А если CompletableFuture не потоки, то почему бы не сделать ровно так, как я изначально предлагал, только вместо new Thread(() -> { ... }).start() задействовать CompletableFuture.runAsync(() -> { ... }) ?
источник

l

lem0nify in learn.java
И ещё вопрос, если CompletableFuture не потоки, то как себя поведёт Thread.sleep в нём? Он же блокирует весь поток. Есть неблокирующая альтернатива, как delay в том же котлине?
источник

QH

Quantum Harmonizer in learn.java
lem0nify
Так это, извиняюсь, что снова дёргаю. А если CompletableFuture не потоки, то почему бы не сделать ровно так, как я изначально предлагал, только вместо new Thread(() -> { ... }).start() задействовать CompletableFuture.runAsync(() -> { ... }) ?
да, ок
источник

QH

Quantum Harmonizer in learn.java
lem0nify
И ещё вопрос, если CompletableFuture не потоки, то как себя поведёт Thread.sleep в нём? Он же блокирует весь поток. Есть неблокирующая альтернатива, как delay в том же котлине?
Блокирует. Поэтому и нужен ScheduledExecutorService.
источник

l

lem0nify in learn.java
Значит всё-таки не ок. 🤣
источник