Виртуальные потоки в Java: эволюция, практика, подводные камни

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки упирались в I/O, как и зачем появились виртуальные потоки, что пошло не так в Java 21, что исправили в JDK 24–25, а также когда виртуальные потоки необходимы, а когда — лучше от них отказаться.

https://habr.com/ru/companies/naumen/articles/953262/

#виртуальные_потоки #java #jdk24 #jdk25 #project_loom #jep_491 #scoped_values #threadlocal #tomcat

Виртуальные потоки в Java: эволюция, практика, подводные камни

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки...

Хабр

Transactions and #ThreadLocal in #SpringFramework. Thanks to José Paumard for prompting me for following the white rabbit down the hole!

https://blog.frankel.ch/transactions-threadlocal-spring/

Transactions and ThreadLocal in Spring

Two years ago, my friend José Paumard held the talk 'Concurrent and Asynchronous Programming : Loom' at the Geneva Java User Group. In his talk, he mentioned that the Spring team would need to completely redesign their approach to transaction: his reasoning was that the transactions are implemented on top of ThreadLocal object and Loom’s virtual threads break this approach. I was intrigued because though I used Spring transactions a lot via the @Transactional annotation, I never opened thou

A Java geek

ThreadLocal и проблемы с памятью: что вы должны знать

Привет, Хабр! ThreadLocal — вещь, которая на первый взгляд кажется отличным решением некоторых проблем многопоточности. Вроде бы просто: привязываешь переменную к каждому потоку, и никто из других потоков не может её трогать. Но за всей этим скрывается куча нюансов, которые могут навести некоторую долю шороха.

https://habr.com/ru/companies/otus/articles/849796/

#java #многопоточность #ThreadLocal

ThreadLocal и проблемы с памятью: что вы должны знать

Привет, Хабр! ThreadLocal — вещь, которая на первый взгляд кажется отличным решением некоторых проблем многопоточности. Вроде бы просто: привязываешь переменную к каждому потоку, и никто из других...

Хабр

Kotlin Coroutines. Часть 2

Прошло так много времени с прошлой статьи, прошу прощения, что заставил вас ждать. Выпускной курс забирал слишком много времени и не было возможности написать столь серьезный материал. Итак, начинаем. Сначала кратко расскажу о материале в этой статье. Для разогрева поговорим о скоупе и о том, для чего он вообще нужен, далее перейдем к контексту, там я попробую объяснить сложное на пальцах, и, наконец, затронем к Continuation.

https://habr.com/ru/companies/reksoft/articles/826326/

#kotlin #kotlin_coroutines #программирование #coroutines #continuation #threadlocal #dispatcher #runblocking #coroutine #scope

Kotlin Coroutines. Часть 2

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

Хабр

Do you know about the ThreadLocal<T> type that allows you to declare data storage that's associated with a specific thread?

If you know that, do you know about a similar concept but for async methods? AsyncLocal<T> is the type that allows you to bind a value to a specific asynchronous method call.
If an async method continues on a different thread, ThreadLocal<T> would not work in such a scenario. That's why AsyncLocal<T> is used.

See the example to get more familiar with how it works!

Docs 📑: https://learn.microsoft.com/en-us/dotnet/api/system.threading.asynclocal-1?view=net-8.0

#dotnet #async #asynclocal #threadlocal
---
If you find this useful, consider giving a like & share ♻

AsyncLocal<T> Class (System.Threading)

Represents ambient data that is local to a given asynchronous control flow, such as an asynchronous method.

Stumbled upon interesting development in #neo4j (#neo4jOgm) https://github.com/neo4j/neo4j-ogm/releases/tag/v4.0.3, interesting use case for bridging #kotlin #coroutine based logic to #java based #threadLocal #transaction management. Check the pull request https://github.com/neo4j/neo4j-ogm/pull/935.
Release v4.0.3 · neo4j/neo4j-ogm

[dependencies] Bump neo4j-java-driver from 5.3.1 to 5.5.0 [refactor] Use recent Java compiler plugin. [bug] Remove unused import. [refactor] Add an extension API for custom transaction managers. (#...

GitHub