Offer来了:Java面试核心知识点精讲(原理篇)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 多线程

在多核操作系统上,JVM允许在一个进程内同时并发执行多个线程。JVM中的线程与操作系统中的线程是相互对应的,在JVM线程的本地存储、缓冲区分配、同步对象、栈、程序计数器等准备工作都完成时,JVM会调用操作系统的接口创建一个与之对应的原生线程;在JVM线程运行结束时,原生线程随之被回收。操作系统负责调度所有线程,并为其分配CPU时间片,在原生线程初始化完毕时,就会调用Java线程的run()执行该线程;在线程结束时,会释放原生线程和Java线程所对应的资源。

在JVM后台运行的线程主要有以下几个。

◎ 虚拟机线程(JVM Thread):虚拟机线程在JVM到达安全点(SafePoint)时出现。

◎ 周期性任务线程:通过定时器调度线程来实现周期性操作的执行。

◎ GC线程:GC线程支持JVM中不同的垃圾回收活动。

◎ 编译器线程:编译器线程在运行时将字节码动态编译成本地平台机器码,是JVM跨平台的具体实现。

◎ 信号分发线程:接收发送到JVM的信号并调用JVM方法。