即时打印机使用java.text.SimpleDateFormat,它不是线程安全的。按照过去的常用Java实践(昨日),实例被折叠到一个代理的ThreadLocal中,这样每个线程的访问都是线程安全的,但不需要同步。在Java 21中,这不是理想的,因为虚拟线程数量众多,在单个虚拟线程内几乎没有重用,就像在之前的线程池非虚拟线程中那样。
相反,我们应该从Java 8开始使用不可变的格式化器java.time.format.DateTimeFormatter,并不要为此使用ThreadLocal。