1,简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
答: 主要相同点: Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
2,同步有几种实现方法 , 都是什么?
同步的实现方面有两种,分别是synchronized, wait与notify
3,sleep() 和 wait() 有什么区别 ?
答: sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4,volatile是用来做什么的?
volatile 的意思是变量的值不能被JVM优化,这样可以在某一程度上保证变量的可见性。
答: 主要相同点: Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
2,同步有几种实现方法 , 都是什么?
同步的实现方面有两种,分别是synchronized, wait与notify
3,sleep() 和 wait() 有什么区别 ?
答: sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4,volatile是用来做什么的?
volatile 的意思是变量的值不能被JVM优化,这样可以在某一程度上保证变量的可见性。