Speaker Details

Mario Fusco
Red Hat

Mario is a senior principal software engineer at Red Hat working as Drools project lead. Among his interests there are also functional programming and Domain Specific Languages. He is also a Java Champion, the JUG Milano coordinator, a frequent speaker and the co-author of "Modern Java in Action" published by Manning.

View
Game of Loom 2: life and dead(lock) of a virtual thread
Conference (ADVANCED level)
Room B1

Virtual threads finally exited their development and preview phases and with JVM 21 are available as a stable and supported Java feature. During the latest VoxxedDays Ticino edition I started exploring the characteristics of virtual threads and their performance implications putting them at work, with a funny but practical example, using a Conway's Game of Life implementation based on Project Loom. Starting from the same playground this time we will explore more in depth the internal implementation details of virtual threads, trying to answer to some interesting questions. What does it mean in practice that virtual threads aren't preemptive? Are local variables enough to replace ThreadLocals in all possible scenarios? What does it happen if you try to replace the fork/join pool, used as default carrier thread pool, with something different? At the end we will conclude this exploration trying to experience the multithreaded programming equivalent of the sound of one hand clapping or how virtual threads make it possible to cause a deadlock using one single lock.

More
View
Measure, don’t guess: a real-world benchmarking story
Workshop (INTERMEDIATE level)

How many times have you implemented a clever performance improvement, and maybe put it in production, because it seemed the right thing™ to do, without even measuring the actual consequences of your change? And even if you are measuring, are you using the right tools and interpreting the results correctly? During this workshop we will use a real-world example, the new virtual threads friendly Jackson objects pool used in Quarkus, to demonstrate how through incremental steps we measured and improved its performances in a highly concurrent environment. We will illustrate how we used JMH for this purpose, explaining why it is the only reliable tool to be used when benchmarking Java applications, how to avoid the most common pitfalls and how to leverage its features to develop meaningful and useful benchmarks.

More

Searching for speaker images...