Сообщение Re[61]: Можно ли избавиться от async|await? от 13.01.2026 10:54
Изменено 13.01.2026 11:06 Serginio1
Re[61]: Можно ли избавиться от async|await?
Здравствуйте, ·, Вы писали:
S>>·>Раз 5 ответил.
S>> Покажи пример. Напимер асинхронной очереди
S>>AsyncProducerConsumerCollection
·>Зачем тебе асинхронная очередь при наличии виртуальных тредов? Используй обычный BlockingQueue.
·>Впрочем, пишется очень похожим образом, если очень надо, используя CompletableFuture.
Я не пишу на Java мне интересно как для TaskCompletionSource прикурутить виртуальные потоки.
С аналогом Run.Task разобрался. Но чем это лучше Task в упор не вижу.
S>>>>Читаю
S>>·>Попробуй ещё понять.
S>>Что бы понять, надо код привести. Ты пока только приводил код с StructuredTaskScope и дал ссылку на аналог TaskCompletionSource.
·>А что тебе ещё надо? Ты ещё сам приводил ссылку на какую-то статью с десятком примеров кода.
Там аналога TaskCompletionSource нет. И сам же говоришь, что StructuredTaskScope еще превью.
S>>·>Эта та же проблема с synchronized, которая давно пофикшена, третий раз на ту же граблю наступаешь
S>>·>Мне надоело.
S>> Ты читаешь только то, что тебе интересно.
·>Что, по-твоему, я не читаю?
S>>Покажи как добавить свои методы, что бы они выполнялись асинхронно.
·>Куда добавить? Зачем асинхронно?
S>> В C# можно просто добавить
S>>
S>>Правда он и будет возвращать Task.
S>> Для Java должен быть метод двойник возвращающий Future?
·>Зачем? Просто Thread.yield()
Ну с этим согласен. Хорошо сделали. Но вот StructuredTaskScope с джойнерами не ахти то и читаемо.
То есть не вижу особенных выгод по сравнению с Task.
По Task я вижу, что метод асинхронный и могу использовать либо параллельно, либо последовательно через await
S>>·>Раз 5 ответил.
S>> Покажи пример. Напимер асинхронной очереди
S>>AsyncProducerConsumerCollection
·>Зачем тебе асинхронная очередь при наличии виртуальных тредов? Используй обычный BlockingQueue.
·>Впрочем, пишется очень похожим образом, если очень надо, используя CompletableFuture.
Я не пишу на Java мне интересно как для TaskCompletionSource прикурутить виртуальные потоки.
static ProductPayload fetchProduct(long id) throws Exception {
ThreadFactory named = Thread.ofVirtual().name("prod-%d", 1).factory();
try (var scope = StructuredTaskScope.open(
StructuredTaskScope.Joiner.<Object>allSuccessfulOrThrow(),
cfg -> cfg.withTimeout(Duration.ofSeconds(1))
.withThreadFactory(named))) {
StructuredTaskScope.Subtask<Product> core = scope.fork(() -> coreApi(id));
StructuredTaskScope.Subtask<Stock> stock = scope.fork(() -> stockApi(id));
StructuredTaskScope.Subtask<Price> price = scope.fork(() -> priceApi(id));
scope.join(); // throws on first failure / timeout
return new ProductPayload(core.get(), stock.get(), price.get());
}
}
void main() throws Exception {
ProductPayload productPayload = fetchProduct(1L);
System.out.println(productPayload);
}С аналогом Run.Task разобрался. Но чем это лучше Task в упор не вижу.
S>>>>Читаю
S>>·>Попробуй ещё понять.
S>>Что бы понять, надо код привести. Ты пока только приводил код с StructuredTaskScope и дал ссылку на аналог TaskCompletionSource.
·>А что тебе ещё надо? Ты ещё сам приводил ссылку на какую-то статью с десятком примеров кода.
Там аналога TaskCompletionSource нет. И сам же говоришь, что StructuredTaskScope еще превью.
S>>·>Эта та же проблема с synchronized, которая давно пофикшена, третий раз на ту же граблю наступаешь
S>>·>Мне надоело.
S>> Ты читаешь только то, что тебе интересно.
·>Что, по-твоему, я не читаю?
S>>Покажи как добавить свои методы, что бы они выполнялись асинхронно.
·>Куда добавить? Зачем асинхронно?
S>> В C# можно просто добавить
S>>
S>>await Task.Yield();
S>>S>>Правда он и будет возвращать Task.
S>> Для Java должен быть метод двойник возвращающий Future?
·>Зачем? Просто Thread.yield()
Ну с этим согласен. Хорошо сделали. Но вот StructuredTaskScope с джойнерами не ахти то и читаемо.
То есть не вижу особенных выгод по сравнению с Task.
По Task я вижу, что метод асинхронный и могу использовать либо параллельно, либо последовательно через await
Re[61]: Можно ли избавиться от async|await?
Здравствуйте, ·, Вы писали:
S>>·>Раз 5 ответил.
S>> Покажи пример. Напимер асинхронной очереди
S>>AsyncProducerConsumerCollection
·>Зачем тебе асинхронная очередь при наличии виртуальных тредов? Используй обычный BlockingQueue.
·>Впрочем, пишется очень похожим образом, если очень надо, используя CompletableFuture.
Я не пишу на Java мне интересно как для TaskCompletionSource прикурутить виртуальные потоки.
С аналогом Run.Task разобрался. Но чем это лучше Task в упор не вижу.
S>>>>Читаю
S>>·>Попробуй ещё понять.
S>>Что бы понять, надо код привести. Ты пока только приводил код с StructuredTaskScope и дал ссылку на аналог TaskCompletionSource.
·>А что тебе ещё надо? Ты ещё сам приводил ссылку на какую-то статью с десятком примеров кода.
Там аналога TaskCompletionSource нет. И сам же говоришь, что StructuredTaskScope еще превью.
S>>·>Эта та же проблема с synchronized, которая давно пофикшена, третий раз на ту же граблю наступаешь
S>>·>Мне надоело.
S>> Ты читаешь только то, что тебе интересно.
·>Что, по-твоему, я не читаю?
S>>Покажи как добавить свои методы, что бы они выполнялись асинхронно.
·>Куда добавить? Зачем асинхронно?
S>> В C# можно просто добавить
S>>
S>>Правда он и будет возвращать Task.
S>> Для Java должен быть метод двойник возвращающий Future?
·>Зачем? Просто Thread.yield()
Ну с этим согласен. Хорошо сделали. Но вот StructuredTaskScope с джойнерами не ахти то и читаемо.
То есть не вижу особенных выгод по сравнению с Task.
По Task я вижу, что метод асинхронный и могу использовать либо параллельно, либо последовательно через await.
С виртуальными потоками все в одну кучу.
Ну я рад за вас, что вам радостно.
S>>·>Раз 5 ответил.
S>> Покажи пример. Напимер асинхронной очереди
S>>AsyncProducerConsumerCollection
·>Зачем тебе асинхронная очередь при наличии виртуальных тредов? Используй обычный BlockingQueue.
·>Впрочем, пишется очень похожим образом, если очень надо, используя CompletableFuture.
Я не пишу на Java мне интересно как для TaskCompletionSource прикурутить виртуальные потоки.
static ProductPayload fetchProduct(long id) throws Exception {
ThreadFactory named = Thread.ofVirtual().name("prod-%d", 1).factory();
try (var scope = StructuredTaskScope.open(
StructuredTaskScope.Joiner.<Object>allSuccessfulOrThrow(),
cfg -> cfg.withTimeout(Duration.ofSeconds(1))
.withThreadFactory(named))) {
StructuredTaskScope.Subtask<Product> core = scope.fork(() -> coreApi(id));
StructuredTaskScope.Subtask<Stock> stock = scope.fork(() -> stockApi(id));
StructuredTaskScope.Subtask<Price> price = scope.fork(() -> priceApi(id));
scope.join(); // throws on first failure / timeout
return new ProductPayload(core.get(), stock.get(), price.get());
}
}
void main() throws Exception {
ProductPayload productPayload = fetchProduct(1L);
System.out.println(productPayload);
}С аналогом Run.Task разобрался. Но чем это лучше Task в упор не вижу.
S>>>>Читаю
S>>·>Попробуй ещё понять.
S>>Что бы понять, надо код привести. Ты пока только приводил код с StructuredTaskScope и дал ссылку на аналог TaskCompletionSource.
·>А что тебе ещё надо? Ты ещё сам приводил ссылку на какую-то статью с десятком примеров кода.
Там аналога TaskCompletionSource нет. И сам же говоришь, что StructuredTaskScope еще превью.
S>>·>Эта та же проблема с synchronized, которая давно пофикшена, третий раз на ту же граблю наступаешь
S>>·>Мне надоело.
S>> Ты читаешь только то, что тебе интересно.
·>Что, по-твоему, я не читаю?
S>>Покажи как добавить свои методы, что бы они выполнялись асинхронно.
·>Куда добавить? Зачем асинхронно?
S>> В C# можно просто добавить
S>>
S>>await Task.Yield();
S>>S>>Правда он и будет возвращать Task.
S>> Для Java должен быть метод двойник возвращающий Future?
·>Зачем? Просто Thread.yield()
Ну с этим согласен. Хорошо сделали. Но вот StructuredTaskScope с джойнерами не ахти то и читаемо.
То есть не вижу особенных выгод по сравнению с Task.
По Task я вижу, что метод асинхронный и могу использовать либо параллельно, либо последовательно через await.
С виртуальными потоками все в одну кучу.
Ну я рад за вас, что вам радостно.