想做个Java虚拟机,遇到多线程管理的问题,请大家提供思路。Java虚拟机是循规蹈矩地执行每一条指令的,它是怎么样识别Java应用程序什么时候新建了一条线程、什么时候该修改状态,什么时候可以消灭一条线程的?我看了一下Java的KVM代码,发现并没有针对Java类库的Thread类作特别的标记处理,那么虚拟机是怎么样管理线程的?

解决方案 »

  1.   

    应该有标记类吧?比如Runnerble.
      

  2.   

    我看了sun公司做的KVM虚拟机源代码,里面并没有就线程类作专门的标记
      

  3.   

    楼主高人啊!!!我连基础的类都没有掌握!嘿嘿,我真是惭愧!!学习ing
      

  4.   

    可能真的没有
    JVM只是通过对多线程的支持集中的表现在同步上,或者说调节多个线程的活动和共享数据。
    我看Inside the JVM,里面也没介绍怎么标记的,只是大概介绍了监视器和对象锁,更多的是在指令集上做文章
      

  5.   

    顶。还有Java虚拟机是怎么样执行本地方法的?
      

  6.   

    还有Java虚拟机是怎么样执行本地方法的?
    ---------------------
    通过调用本地方法栈来实现的
      

  7.   

    回复人: sqsavagepointer(野人) ( ) 信誉:98  2005-03-26 19:05:00  得分: 0  
     
     
       顶。还有Java虚拟机是怎么样执行本地方法的?
      
     
    faint.这个问得太离谱了,深层次的还是浅层次的?
    深层次的,我不懂,浅层次的,大家都明白
      

  8.   

    JAVA没有管理线程,都是通过本地方法调用操作系统的API创建线程的,同步锁什么的也是一样。。JAVA本地方法的调用简单了:
    JVM是C/C++写的,用C/C++怎么调就怎么调了。。
      

  9.   

    “JAVA没有管理线程,都是通过本地方法调用操作系统的API创建线程的,同步锁什么的也是一样。。”
    JAVA本地方法的调用简单了:
    JVM是C/C++写的,用C/C++怎么调就怎么调了。。-------------------------------------
    1.Java调用了哪些本地方法调用操作系统的API?2.这些本地方法存放在哪里?3.JVM怎么知道该在何时调用这些本地方法呢?我是想设计实现一个JVM,而不是怎么去使用一个JVM
      

  10.   

    这是我开的另外一个帖子,也是100分相求:http://community.csdn.net/Expert/topic/3968/3968911.xml?temp=.6910364
    帖子内容:我使用Java语言正在设计和实现一个JVM,但在运行阶段遇到了两个问题,希望能得到大家的指点。1. 怎么样调用Java API中的类的本地方法?例如Object类。我将Object.class文件中的内容装载之后,就要进行初始化。这个类的初始化方法<clinit>只有两条指令:
    invokestatic 71
    return
    其中第一条指令实际上是调用一个Object类中的私有的本地方法registerNatives。我应该怎么样做才能调用这个方法呢?还是我必须自己去实现这个方法?2. 怎么样进行Java级的多线程管理?作为一个JVM,是怎么样知道Java源程序新建了一条线程?怎么样知道线程改变了它的状态?怎么样知道线程间发生了切换?怎么样知道线程已经死亡?
      

  11.   

    1、用jni调用本地方法。public native void method()
    2、建议去看一看java线程第二版.
      

  12.   

    1、首先用static {
    System.loadLibrary( "Jni_Name" ) ;

    加载jni.然后再调用native方法。