sleep()和wait()、start()和run()
sleep()和wait()、start()和run()
1. sleep()、wait()
1.1 相同点
两者都可以暂停线程执行
1.2 区别
wait()方法释放了锁;sleep()方法没有释放锁wait()方法通常被用于线程间的通信;sleep()方法通常被用于暂停执行wait()方法调用后,需要别的线程使用notify()或notifyAll()方法唤醒当前线程,或者使用wait(long timeout)方法指定线程的苏醒时间;sleep()方法执行完成后会自动苏醒wait()方法属于Object类的本地方法;sleep()方法属于Thread类的静态方法
1.3 为什么wait()方法定义在Object类中
wait()方法是让获得对象锁的线程实现等待,会释放当前线程占有的对象锁,对象锁是每个对象的拥有的,因此定义在Object类中
同理,sleep()方法是让当前线程暂停执行,不涉及到对象类、对象锁,因此定义在Thread类中
2. start()、run()
start()方法会启动一个线程,并自动执行它的run()方法,这是真正的多线程内容- 直接执行
run()方法,会把run()方法当作main线程下一个普通的方法去执行,与多线程无关
1 | |

sleep()和wait()、start()和run()
http://example.com/2025/05/22/sleep()和wait()、start()和run()/