java.util.concurrent.locks 包中的接口和实现类

上一篇

JUC以及并发,线程同步,线程安全的概念加深

上一篇博客中,我们使用了一个线程安全的Vector来解决多线程下向集合添加数据造成的数据安全问题,本质上还是用的synchronized关键字来实现的线程同步。

但是synchronized有以下缺陷:

  • 不支持公平性,在 synchronized 中,锁一旦释放,任何等待中的线程都有机会去获取该锁。这可能导致其中一个线程一直获取到锁资源,而其他线程长时间无法获取到锁资源,从而造成线程的不公平性。
  • 阻塞等待 如果一个线程不能获取到 synchronized的锁,那该线程就会一直处于阻塞状态,直到获取锁,且不能中断,无法通过外部的中断机制来终止处于阻塞状态的线程,灵活性不足。

而JUC中给我们提供的锁则可以解决上面的问题,使用起来也更加灵活。

这里先来说一下synchronizedLock区别

你可能感兴趣的:(juc,locks,ReadWriteLock,Condition,Lock,juc)