notifyall()唤醒所有处于等待状态的线程,而notify()则是唤醒一个处于等待状态的线程,并且notify()并不能确定到底唤醒哪一个(只是唤醒一个),所以一般用notifyall()。

解决方案 »

  1.   

    1.这个并不确定 要看具体的平台
    2.是 notifyall()效果是要好一些
      

  2.   

    每一个线程都有一个优先度(priority)。
    Thread类里面定义了
    static int MAX_PRIORITY 
    static int MIN_PRIORITY 
    static int NORM_PRIORITY  
     int getPriority()  
    void setPriority(int newPriority)  
    但是priority对scheduling的影响应不同的平台而异。
      
      

  3.   

    1、这个问题与操作系统有关,具体的线程调度算法依赖于操作系统,而不是JVM2、建议你看一下文档
      

  4.   

    1、线程的调度算法和具体的操作系统有关,比如WINDOWS用的是时间片,和优先级无关,而Solaris则用的是线程的优先级进行线程调度。
    2、建议用notifyall()。
      

  5.   

    1,solaris JVM's are pre-emptive
       windows JVM's were pre-emptive until java 1.0.2
     ----------------------------------------------------
       Mactinosh JVM's are time-sliced
       windows JVM's are time-sliced after java 1.0.22,~~~