<?xml version="1.0" encoding="ISO-8859-1"?>












<rss version="2.0">
  <channel>
    <title>The Java(tm) Specialists' Newsletter</title>
    <link>https://www.javaspecialists.eu</link>
    <description>The Java(tm) Specialists' Newsletter features advanced articles and tips surrounding the Java Programming Language</description>
    <language>en</language>
    <copyright>Copyright 2000-2026, Dr Heinz Max Kabutz</copyright>
    <managingEditor>Dr Heinz Kabutz</managingEditor>
    <webMaster>Dr Heinz Kabutz</webMaster>
    <ttl>1440</ttl>
    
    <item>
      <title>Issue 333 - Surprising += Cast (Rerun)</title>
      <link>https://www.javaspecialists.eu/archive/Issue333-Surprising--Cast-Rerun.html</link>
      <pubDate>Sat, 28 Feb 2026</pubDate>
      <description>Surprisingly, the compound arithmetic expression contains a cast that can produce some interesting side effects.  In this newsletter we explore this and other edge cases in the Java Language Specification.</description>
    </item>
    
    <item>
      <title>Issue 332 - ForkJoinPool.asyncCommonPool()</title>
      <link>https://www.javaspecialists.eu/archive/Issue332-ForkJoinPool.asyncCommonPool.html</link>
      <pubDate>Fri, 30 Jan 2026</pubDate>
      <description>The common ForkJoinPool refuses to tell us its exact parallelism, in order to spare us embarrassing division by zero errors. The effect is that the rest of the concurrency framework has had to create dangerous workarounds to counteract a possibly zero sized pool. Since Java 25, the ForkJoinPool will silently create a couple of threads to make CompletableFuture (and others) safer to use. In addition, ForkJoinPool has become a ScheduledExecutorService, thus we can use the common ForkJoinPool as a global timer.</description>
    </item>
    
    <item>
      <title>Issue 331 - Virtual Thread States</title>
      <link>https://www.javaspecialists.eu/archive/Issue331-Virtual-Thread-States.html</link>
      <pubDate>Wed, 31 Dec 2025</pubDate>
      <description>No major feature has been adopted as quickly into production systems as virtual threads. Not generics. Not streams. But there are some catches. Original Java threads have six states. Virtual threads have 20 states, which Java maps onto the original six states. However, sometimes it can be useful to know what the virtual threads state is. In this newsletter we use deep reflection to learn how that works.</description>
    </item>
    
    <item>
      <title>Issue 330 - Looking Back on 25 Years</title>
      <link>https://www.javaspecialists.eu/archive/Issue330-Looking-Back-on-25-Years.html</link>
      <pubDate>Sun, 30 Nov 2025</pubDate>
      <description>Today marks our 25th newsletter anniversary, when I sent out an email to 80 colleagues and friends. To celebrate, we are looking at some of the most popular newsletters over the years. Thanks for being part of this adventure.</description>
    </item>
    
    <item>
      <title>Issue 329 - Filtering Exceptions via try</title>
      <link>https://www.javaspecialists.eu/archive/Issue329-Filtering-Exceptions-via-try.html</link>
      <pubDate>Thu, 30 Oct 2025</pubDate>
      <description>One of the ways of figuring out the type of an exception is with instanceof. Another is to re-throw it, and to use the catch mechanism to sort things out. In this newsletter we look at different options, including switch with pattern matching.</description>
    </item>
    
    <item>
      <title>Issue 328 - Negative size() in LinkedBlockingDeque</title>
      <link>https://www.javaspecialists.eu/archive/Issue328-Negative-size-in-LinkedBlockingDeque.html</link>
      <pubDate>Mon, 29 Sep 2025</pubDate>
      <description>The LinkedBlockingDeque has an interesting feature in addAll(), where they first build up the linked nodes and then add them all to the tail. However, a bug allowed us to overflow the size, resulting in a negative count. In this newsletter we look at this bug, and also how it was fixed in Java 26.</description>
    </item>
    
  </channel>
</rss> 
