同级别的线程间是会互相抢夺资源的。也就是说即使我们不写任何使线程让出资源的代码,系统也是会进行资源枪夺。因此a、b、c三个同级线程会出现上述现象。

解决方案 »

  1.   

    可是书上说Java中的多线程调度采用是抢占式的呀?
      

  2.   

    不想多解释什么了。记住这点吧,JAVA的两大缺陷在于:
    (1) 无法调度垃圾收集;
    (2) 无法控制线程调度;线程的调度在虚拟机规范中规定得非常松散,这是为了方便在不同的硬件平台和操作系统上移植JVM。恰恰也正是因为这个,不同JVM可以在线程调度上实现得有很大的差别。
    线程的调度由JVM来实现和负责,所以不要尝试在JAVA中去控制线程的调度。原因很简单,如果你的任务倚赖在线程调度上面,假设在A虚拟机上有正确的表现,如果移植到B虚拟机上很有可能就会出现错误,这样的情况是大家都不原意看到的。