java线程是基于操作系统的吗? 还是基于虚拟机的?
比如一个不支持多线程的操作系统环境下,可以使用虚拟机吗?
另外,JAVA多线程是可以分布运行在同一个虚拟机上还是不同的虚拟机上?

解决方案 »

  1.   

    不好意思,上面一句话说错了“比如一个不支持多线程的操作系统环境下,可以使用虚拟机吗?”
    应该是“比如一个不支持多线程的操作系统环境下,可以使用JAVA多线程吗?”
      

  2.   

    如果操作系统不支持多线程,JVM会利用多进程模拟的只要在这个操作系统上有JVM,那么你可以认为它已经实现了,多线程对你已经是透明的了
      

  3.   

    基于虚拟机的
    系统不支持应该也可以使用
    在不同的虚拟机上应该是很难实现的下面是图示,不好意思不能贴图,只好自己画了virtual processes processes processes
    user       |          |         |
    mode       |          |         |
    virtual kernel 1  kernel 2   kernel 3
    monitor   \                    /
    mode       \                  /
    monitor  virtual machine software
    mode          hardware
      

  4.   

    谢谢,真是个热心人
    不过怎么少了操作系统层,还多了那么多kernel,上面怎么还有那么多进程,一个虚拟机不就是一个进程了吗??
      

  5.   

    你没搞清楚进程和线程啊...
    他们是2个东西
    进程就是你在 任务管理器 里能看到的那些当前运行的.exe列表同时,每个进程又可以启动属于它自己的很多线程那QQ打个比方 
    运行QQ的时候,在系统里会有一个QQ进程
    然后QQ的主进程会启动负责不同工作的线程,比如TCP传输的网络线程,GUI显示的图像线程,监视键盘的监视线程等等...
      

  6.   

    楼上那张图是不是processes应该改为thread更合理一点。。
      

  7.   

    我也来学习下,明白了Java多线程是基于虚拟机的。