在尝试比较在 Java 和 Scala 中实现的同一个简单问题的“执行特性”时,我发现 Java 版本中的线程类运行在名称为 Thread-x的线程上,而 Scala 参与者运行在名称为ForkJoinPool-x-worker-y。非线程 Java 类和非参与者 Scala 类始终在主线程上运行。
下面的日志片段将说明:
Java version: Scoord thread class running in Thread[Thread-0,5,main]
Semaphore class running in Thread[main,5,main]
Scala version: Scoord actor running in Thread[ForkJoinPool-1-worker-13,5,main]
Semaphore class running in Thread[main,5,main]
Thread
除了作为不同类的实例(类与类)之外,这些线程之间有什么区别ForkJoinWorkerThread
?工作线程如何映射到 O/S 内核线程以执行?
对用于 JVM 线程的命名约定的任何解释也将不胜感激。
两种实现都在相同版本的 JVM 上运行 - HotSpot (TM) 64 位服务器 VM(内部版本 23.21-b01,混合模式)。硬件是具有 8G 内存的 64 位 4 核 Acer 笔记本电脑,运行 Windows 8。