wait() & notify() & sleep()
1>sleep是Thread类的函数,wait和notify是Object的函数。
2>sleep的时候keep对象锁,wait的时候release 对象锁。
3>sleep时监控状态依然保持。wait进入等待池,只有针对该对象发出了notify才会进入对象锁池。
4>sleep时间过了就会恢复运行,wait后等到notify了,也不一定是立即运行。
1>sleep是Thread类的函数,wait和notify是Object的函数。
2>sleep的时候keep对象锁,wait的时候release 对象锁。
3>sleep时监控状态依然保持。wait进入等待池,只有针对该对象发出了notify才会进入对象锁池。
4>sleep时间过了就会恢复运行,wait后等到notify了,也不一定是立即运行。
5>wait和notify是非static函数,sleep是Thread类的static函数。
stop() & destroy() & suspend()
1>都是Thread类的函数,都不推荐使用。
2>stop放弃了所有的lock,会使得对象处于一种不连贯状态。
3>destroy的时候如果还keep了某些资源的lock,那就死定了
4>suspend会继续持有所有的lock,容易发生死锁。
创建线程
1>继承Thread类,override它的abstract函数run
2>实现Runnable接口,写run函数。