JUC-java.util.concurrent
1.实用程序类通常在并发编程中很有用。
2.有关线程的状态 :
- NEW :新建
- RUNNABLE:就绪
- BLOCKED:阻塞
- WAITING:等待
- TIMED_WAITING:
- TERMINATED:死亡
3.sleep和wait区别:
1.不同类,一个在Thread,一个在Object
2.一个不释放锁,一个释放锁
3.一个随便用,一个必须在同步块内使用
4.一个需要捕获异常,一个不需要。
4.LOCK 与Syschronized 差异
1.从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。synchronized是java中的一个关键字,也就是说是Java语言内置的特性。
2.synchronized对象在获取锁后,其他线程只能等待,无法同时进行读操作,影响程序执行效率。lock锁住对象时,当一个线程在进行读操作时,其他线程可以进行读操作。
3.synchronized不需要用户去手动释放锁,执行完后系统会自动让线程释放对锁的占用。Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。
4.synchronized无法判断状态,lock可以判断状态
5.synchronized是非公平锁,lock可以自动选择是否公平锁。
6.synchronized适合少量代码,lock适合大量同步代码。
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
// ... method body
} finally {
lock.unlock()
}

浙公网安备 33010602011771号