Java多线程设计模式wait和notify机制总结:
另:sleep方法使当前线程暂停执行一段时间,从而让其他线程有机会继续执行,但它并不释放对象锁。也就是说,如果有Synchronized块,其他线程仍然不能访问共享数据。
举生产者-消费者例子来说:仓库提供两个同步方法,一个put,一个get,假设put方法中线程sleep30秒,在这段时间中,get方法并不能从仓库中获取产品,因为sleep时并没有释放对象锁,所以调用get方法的线程不能执行。
假设有两个线程同时执行,都没有调用synchronized方法,一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有sleep()方法,只有高优先级的线程执行完成后,低优先级的线程才能执行;但当高优先级的线程sleep(5000)后,低优先级就有机会执行了。
即:sleep方法可以使低优先级的线程得到执行的机会,当然也可以让同优先级、高优先级的线程获得执行的机会。
原文地址:http://blog.csdn.net/u012198382/article/details/41146091