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()
     }

  

  
posted @ 2021-11-16 23:47  阿·超  阅读(26)  评论(0)    收藏  举报