Re[4]: Киллер фича JDK 21 - virtual threads
От: m2user  
Дата: 09.05.23 23:28
Оценка:
·>Лямбды тут непричём. Вообще.
·>wiring код немного поменяются. И собственно всё. Вся бизнес-логика остаётся как есть, и можно масштабировать старинный код, который все боятся трогать.

Можно и без лямбд, но Runnable/Callable при создании VirtualThread передать придется.

m>>(а если ещё вспомнить, что лямбды в Java не умеют захватывать неконстантные переменные в отличие от C#)

·>Шо?! Они переменные со стека не умеют захватывать только. Как собственно и в шарпе.

Разницу C# и Java применительно к захвату переменных лямбдами обсуждали тут: Класс для возврата значения из лямбды
Мне для получения результата Callable, обернутого в VirtualThread, придется к таким же ухищрениям прибегать, как в той теме?

m>> Из статьи на которую ссылается TC, преимущество перед async/await неочевидно (там сравнение с async/await в Котлине)

m>> (https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/)
·>С тем, что код тупой, обычный, синхронный, понятный любому индусу, без всякого мусора async/await, возможно написанный ещё до создания самого c#. Гугли "function coloring".

Ты утверждал, что код остается "плоским", однако из примеров в статье видно, что вложенность увеличивается

static Thread bathTime() {
  return virtualThread(
    "Bath time",
    () -> {
      log("I'm going to take a bath");
      sleep(Duration.ofMillis(500L));
      log("I'm done with the bath");
    });
}


И что насчет перехвата исключений? Перехватывать нужно внутри VirtualThread?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.