lealone 的调度器是为数据库的场景专门定制的,在调度器中执行的数据库任务依然是用异步风格,并没有用虚拟线程加同步风格的任务。在 lealone 的调度器中切换不同的数据库任务开销极低,无需保存和恢复任务的状态,任务的启动和出入队列都极其高效。所以我不会用虚拟线程改写 lealone 的内核代码的。
@zhh-4096
像 h2、mysql、postgresql 的 jdbc 驱动的代码中有不少加了 synchronized 的代码,jdk 的网络 bio 的代码也有,虚拟线程遇到 synchronized 不但不会发生虚拟线程切换,还会阻塞运行它的系统线程,并且 java 的调度器中运行的系统线程数不变,一旦被阻塞就不能跑其他虚拟线程,这就解释了为啥效果不好。
