我们知道多个线程执行的时候,是每个线程轮流执行很小的时间的,比如有三个线程a,b,c,当b休眠后,假如a执行一小段时间后,然后,c再执行一段时间后,那会轮到b吗,是不是b在休眠,所以就不给b分配时间了,只给a和c分配时间???

解决方案 »

  1.   

    如果是Thread.sleep(5*1000) 那么在时间5秒内将不分配给这个线程资源
    当5秒后进入runable,就可以分配资源了
      

  2.   

    具体的线程分配与虚拟机的线程调度机制有关,sleep()的作用就是人为的控制线程的优先顺序。
      

  3.   

    是的,sleep() 只是当前线程休眠 ,不具备唤醒其他线程的功能!所以B不会执行,除非他被唤醒!
      

  4.   

    b在sleep的时候是不会运行的,在sleep期间只能被interrupt,会抛出interruptException
      

  5.   

    "我们知道多个线程执行的时候,是每个线程轮流执行很小的时间的"这只是操作系统调度线程的方式之一。JVM中线程的调度是很复杂的,有很多因素都会影响线程的执行,如优先级、资源竞争、人工干预等等。