我是这么理解的。在多线程操作中,一个线程如果是用了wait()方法,该线程就会释放锁(所谓的锁就是线程的执行权,也就是cpu的执行权),之后进入线程池等待,这时其他在线程池中的线程就会一拥而上,抢夺cup的执行权,谁抢到了由谁运行,该线程如果被notifuy方法唤醒后,之后不会立即获得锁,在单核cpu的硬件配置中只有当其他线程释放cpu执行资源时或者其他线程wait()时,才会和其他线程一起去抢夺cpu的执行权,谁的优先级最高,抢到的概率就最大,抢到就抢到了,没抢到你就继续等着吧,与sleep()方法不同的是,线程在使用sleep()方法睡眠期间,不会释放锁,也就是我不执行,别人也别想得到执行。 |