Asynchronous programming techniques, from simple callbacks, through so-called reactive APIs, to specialized language constructs such as async/await, are growing in popularity. Requirements for concurrent applications under heavy load are the reason for this growth in popularity.
Traditional programming technique based on blocking IO operations do not scale because OS kernel threads, the software unit of concurrency, are too heavyweight to directly represent fine-grained domain units of concurrency, such as the user session or the transaction. These techniques come at a great cost and do not integrate at all smoothly with the core ideas of imperative programming languages -- they require built-in constructs to be reimplemented in DSLs, lose important context, and make interoperation with existing code very difficult.
Therefore, instead of abandoning the abstraction most natural for imperative code, the thread and synchronous operations, we have decided to provide a lightweight implementation of threads, in the runtime rather than the OS, in the JDK, as part of Project Loom.
This talk will present the work done in Project Loom, focusing on fibers and structured concurrency, explain why we believe this is the correct approach for the JDK, and discuss some of the peculiar challenges of implementing lightweight threads in the JVM.
Ron works at Oracle, in the Java Platform Group, and is the technical lead for OpenJDK's Project Loom, which seeks to add lightweight threads and continuations to the JDK.
|Talks by tracks||Talks by session types||List of Speakers||Schedule|