在 虚拟线程详解 这篇文章里面,我们详解了虚拟线程的一个执行原理和底层执行顺序。那么这里我们分享一下一个使用虚拟线程的坑点。 PINNED指的是绑定,意思是虚拟线程无法在阻塞操作期间卸载,而被固定到其运载线程。 JEP425给出的说明中,提到了两种发生pinned的情况: 当调用的代码中被synchronized关键字修饰。 执行native method或foreign function。 1.1 synchronized 绑定测试 案例代码: public class Main { private static volatile Object instance = new Object(); private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static void runTask(int threadNum) { realRunTask(threadNum); } private static void...