HEAD
JUC 是 java.util.concurrent 包的简称,在 Java5.0 添加
JUC包是为了更好的支持高并发任务,具体来说,让做多线程编程时减少竞争条件和死锁的问题
JUC 是 java.util.concurrent 包的简称,在 Java5.0 添加
JUC包是为了更好的支持高并发任务,具体来说,让做多线程编程时减少竞争条件和死锁的问题
悲观锁
悲观锁假定会有并发访问,因此在访问共享资源之前先获取锁。在 Java 中,synchronized 关键字和 ReentrantLock 都是悲观锁的实现方式。当一个线程获取了锁,其他线程就会被阻塞,直到持有锁的线程释放锁。
阻塞
阻塞指的是线程在访问共享资源时被挂起,直到某些条件满足后才能继续执行。在 Java 中,使用 synchronized 关键字或者 ReentrantLock 进行同步时,如果获取锁失败,线程会进入阻塞状态,直到获取到锁为止。
管程 是一种并发编程的抽象概念,用于控制多个线程对共享资源的访问。在 Java 中,synchronized 关键字可以用来实现管程,通过对方法或代码块进行同步,确保同一时间只有一个线程可以访问共享资源
Monitor 是一种用于实现 管程 的机制,通常与悲观锁和阻塞相联系。Java 中的每个对象都有一个关联的 Monitor,它负责管理对象的同步和并发访问。当一个线程进入 synchronized 方法或代码块时,它会尝试获取对象的 Monitor,如果获取失败就会进入阻塞状态,直到获取到 Monitor 才能继续执行。