开发者社区> 问答> 正文

请问JAVA中native方法对线程和JNI的解析和在CodeCache的保存有何影响和不同?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。

多线程状态下 当前线程调用到 native 方法时,对于 JVM 来说,是对其他线程进行 阻塞,等待当前线程执行完 native 方法,还是在执行 native 方法过程中,任然可以进行多线程的切换执行?(目前没有环境,无法测试)

那么当调用到 native(如:C++) 方法时,会被 JNI 在 Code Cache 解析为一条指令,还是继续解析 native 方法得到相应指令?如果是继续解析 native 方法 ,那么解析后的机器码,在 Code Cache 中的保存和 将 JAVA 代码解析后的机器码保存有什么不同?

谢谢。

展开
收起
茶什i 2019-08-20 20:00:13 584 0
1 条回答
写回答
取消 提交回答
  • 首先,java里面的线程,只是执行一个方法,那个方法名为 public void run(){} 再次,在java里面,使用线程是要继承Thread类(重写run方法),或者是实现Runnable接口(实现run方法) 然后,建立一个线程,是 1、继承线程Thread类: MyThread thread=new MyThread(); 启动:thread.start();这样就启动一个线程,但它只是执行run方法里面的东西  2、实现Runnable接口的:MyRunnableThread thread=new MyRunnableThread(); 启动: Thread runThread=new Thread(thread); runThread.start();(或者直接写为:new Thread(thread).start() )  最后,在这里你应该可以看到了,这是一个类线程,不是一个方法线程。如果你要执行多个方法,就要多写和创建启动多个线程类
    

    答案来源网络,供参考,希望对您有帮助

    2019-10-17 14:25:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何通过 Serverless 提高 Java 微服务治理效 立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
多IO线程优化版 立即下载

相关镜像