栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解Java的本机线程和jvm

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解Java的本机线程和jvm

是否每个线程都创建自己的JVM实例以处理其特定执行?

不。它们在同一个JVM中执行,以便(例如)它们可以共享对象和类属性。


如果不是,那么JVM是否必须有某种方式来调度它接下来要处理的线程

Java中有两种线程实现。本机线程映射到由主机OS实现的线程抽象。操作系统负责本机线程调度和时间分片。

第二种线程是“绿色线程”。这些由JVM本身实现和管理,而JVM实现线程调度。自Java 1.2以来,Sun / Oracle
JVM不支持Java绿色线程实现。(请参阅绿色线程与非绿色线程)


如果是这样,那么由于一次只能运行一个线程,这是否会使Java的多线程性质无用?

现在我们正在谈论绿色线程,这从Java角度来看(仅)具有历史意义。

  • 绿色线程的优点是在非I / O情况下调度和上下文切换更快。(基于在Linux 2.2上使用Java进行的测量;http://citeseerx.ist.psu.edu/viewdoc/summary?doi = 10.1.1.8.9238)

  • 使用纯绿色线程,将N个编程语言线程映射到单个本机线程。如前所述,在此模型中您无法获得真正的并行执行。

  • 在混合线程实现中,将N个编程语言线程映射到M个本机线程(其中N> M)。在此模型中,进程内线程调度程序负责绿色线程到本机线程的调度,并且您将获得真正的并行执行(如果M> 1)。

但是,即使有了纯绿色线程,您仍然可以获得并发性。控制被切换到另一个线程,这些线程在I /
O操作上被线程阻塞,立即获取锁,依此类推。此外,JVM的运行时可以实现定期的线程抢占,以便CPU密集型线程不会将(单个)核心独占为其他线程的排斥对象



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号