sleep()线程结束休眠后会进入Runnable状态,也就是停止执行了。要再次被调度程序选中然后获得cpu时间片才会被执行。Thread.sleep(0)就是个很好的例子,就是让大家再抢一次cpu时间片。sleep()是线程本身的静态方法,谁调用谁休眠,就算a线程调用b线程的sleep也是a线程休眠。
另外join方法调用后会等待线程执行完成后又会进入Runnable状态 等待用户输入的线程,用户输入之后也会重新进入Runnable状态 以上三种都是blocked状态的三种情况 另外synchronized修饰的方法和类,会让没抢到锁的线程停止执行,yield是让当前执行的线程让出cpu时间片(并不是线程本身的方法),也算让线程停止执行了。只要不是Running状态都是停止执行了。