All these frameworks create another level of abstraction on top of Threads. For example using kotlin-coroutines will seemingly require more CPU cycles than pure threads because of scheduling. For reactive we have same situation, extra level - more CPU cycles. Though I don't know about akka-actors.
And still even with more CPU cycles for scheduling of coroutines we still may have performance gains because of non-blocking approach.
Can someone please explain these gains (or is it a trade-offs?) in detail with focus on hardware and OS level? Maybe what are situations when we would want to use coroutines or reactivex and when we don't want to use them because of something?