码迷,mamicode.com
首页 > 编程语言 > 详细

JVM执行native方法,计数器为空(undefined),又怎么继续执行Java代码的问题?

时间:2018-01-28 22:01:14      阅读:1056      评论:0      收藏:0      [点我收藏+]

标签:undefined   字节码   define   独立   字节   分配   程序   解释   col   

在Java的自动内存分配中,我们看到一句话:

如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是native方法,这个计数器值则是为空(undefined)

问题:

我们知道,程序计数器用来存放字节码指令地址;通过这个地址,虚拟机就能知道执行到哪里,以及怎么往下执行,可调用native方法,值就变成空了,那么机器不就直接崩溃了吗?

解释:

参考C++理解是:当线程中调用native方法的时候,则重新启动一个新的线程,那么新的线程的计数器为空则不会影响当前线程的计数器,相互独立。

 

问题:

如果是新启动的一个线程,那么不会因为线程异步问题,无法控制执行顺序吗?

解释:

当前线程应当会被阻塞,知道另外一个线程执行结束。例如:通过死循环来控制阻塞(当然死循环效率太低,这里只是一个例子)

JVM执行native方法,计数器为空(undefined),又怎么继续执行Java代码的问题?

标签:undefined   字节码   define   独立   字节   分配   程序   解释   col   

原文地址:https://www.cnblogs.com/lay2017/p/8372312.html

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!