sleep
:
使线程停止一段时间执行,时间到后,不一定立即恢复,依照优先级和时间片‘
wait
:
调用wait的线程暂停执行,等待其他线程调用该同步监视器的notify或notifyAll方法,被唤醒、
windows32环境中
,
线程的3中基本模型
:
- 单线程——一个线程完成所有应用程序任务
- 单元线程——多个线程,单元线程的代码在自己的线程中执行,并限制在自己的单元中,所有线程都在主应用程序内存中各自的字段范围内运行
- 自由线程——多个线程同时调用相同的方法和组件,共享应用程序的内存空间,注意同步
同步和异步
同步:线程间共享数据,读写需要保证原子性
异步:应用程序在对象上调用一个需要花费长时间的操作方法,并且不希望让程序等待方法的返回,应用异步编程,大部分情况下,异步效率高
synchronized与java.util.concurrent.locks.Lock的区别
相同点:Lock可以完成synchronized所实现的所有功能
不同点:Lock有比synchronized的更精确的语义和更好的性能,synchronized的会自动释放锁,而Lock需要程序员显示释放锁,且在finally块中