- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在阅读 JVM 中的垃圾收集器。据记载,在收集的某些阶段,应用程序线程会停止。
我不确定 JVM(线程的所有者)如何停止线程。我不确定 JVM thread
如何控制创建的线程。我看到 java
进程是该线程的所有者,但直到那天我还没有看到停止运行线程的方法。我想并且我隐含地假设 Java 包装了 Unix 线程。 (请解释这个问题,因为我不确定)。
最佳答案
JVM 可以控制线程,因为线程相互协作。只有几种可能性:
线程可能正在执行 JVM 本身的代码,例如口译员。然后,显然,该代码可以包含检查是否需要线程挂起。
它可以执行生成的代码,将字节代码编译为本地代码的结果。由于 JVM 的代码生成器生成了该代码,因此它需要插入必要的代码以支持在“安全点”挂起线程。
它可以执行不支持线程挂起的任意 native 代码。在那种情况下,没关系,因为该代码不会干扰垃圾收集等服务。访问 Java 堆的唯一方法是通过 JVM 提供的接口(interface),如 JNI。当然,一旦 native 代码调用 JVM 提供的函数来访问堆,JVM 就会控制操作并可能暂停线程直到正在进行的垃圾收集结束。
确切的机制,例如如何在底层实现安全点,对于了解 JVM 始终控制所有可能会干扰垃圾收集等进程的堆访问并不重要。并且只有那些线程需要停止。
关于linux - JVM控制系统线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391844/
场景:WAMP 服务器、InnoDB 表、自动递增唯一 ID 字段 [INT(10)]、100 多个并发 SQL 请求。如果需要,也应使用 VB.Net。 我的数据库有一个自动递增字段,用于为每个存储
我是一名优秀的程序员,十分优秀!