Java 19 was officially released a few minutes ago, a non-LTS (long term support) release with seven features including structured concurrency, record mode, a preview of external functions and memory APIs, and support for the open source Linux/RISC-V instruction set architecture (ISA). New Features JEP 405 Record Patterns (preview) JEP 422 Linux/RISC-V Port JEP 424 Foreign Function & Memory API (preview) JEP 425 Virtual Threads (Preview) JEP 426 Vector API (4th incubation)
Java’s multithreading mechanism essentially accomplishes two things, asynchronous computation and concurrency. Concurrency is solved by a series of APIs that address thread safety; asynchronous computation, on the other hand, is commonly used with Runnable and Callable in conjunction with threads. FutureTask is a cancelable asynchronous callable API based on the Runnable implementation. Basic usage Future represents the result of an asynchronous computation, and is executed via the ExecutorService’s Future<? > submit(Runnable task) method of the ExecutorService, which is used as the return value.
Virtual threading is something I’m really excited about. It’s a long-awaited feature in the language and we’ve made very few attempts to implement it in the past, but it’s finally here and it’s been merged into Java 19. This means that it will be included as a preview feature and we will be able to use it as soon as JDK 19 is released. Most of the content on the virtual (green) threads is written by non-Java developers, why is that?