`

java的Condition 加强版的wait notify

 
阅读更多
Lock对应Synchronized,使用之前都要先获取锁
                      Object      Condition
休眠                wait        await
唤醒个线程      notify      signal
唤醒所有线程   notifyAll   signalAll

    Condition它更强大的地方在于:能够更加精细的控制多线程的休眠与唤醒。
     对于同一个锁,我们可以创建多个Condition,就是多个监视器的意思。在不同的情况下使用不同的Condition。

例如,假如多线程读/写同一个缓冲区:当向缓冲区中写入数据之后,唤醒"读线程";当从缓冲区读出数据之后,唤醒"写线程";
    
如果采用Object类中的wait(), notify(), notifyAll()实现该缓冲区,当向缓冲区写入数据之后需要唤醒"读线程"时,不可能通过notify()或notifyAll()明确的指定唤醒"读线程",而只能通过notifyAll唤醒所有线程(但是notifyAll无法区分唤醒的线程是读线程,还是写线程)。

但是,通过Condition,就能明确的指定唤醒读线程。
0
0
分享到:
评论

相关推荐

    Java开发技术大全.pdf

    NIO(New Input/Output)是Java 1.4引入的增强版I/O,提供了非阻塞式I/O操作和选择器等功能。 6. **多线程**:Java支持多线程编程,可以创建Thread对象或者实现Runnable接口。书中会讲解线程的同步与通信,如...

    java多线程编程大总结

    5. 线程的交互:Java提供了wait/notify/notifyAll机制来协调不同线程之间的交互,使得线程可以相互合作完成任务。 6. 线程的调度:Java线程模型提供了多种方式来控制线程的执行,如休眠(sleep)、优先级(set...

    java开发一个很好的例子

    了解线程同步和通信(如synchronized关键字、wait()、notify()、Condition等)对于开发并发应用程序至关重要。 8. **设计模式**:Java开发中,设计模式是一种解决常见问题的最佳实践。例如,单例模式用于确保一个类...

    JAVA并发编程实践 EN(全)

    7. **线程通信**:讲解wait()、notify()和notifyAll()方法以及它们在实现线程间通信中的作用,以及如何使用Condition接口进行更灵活的线程同步。 8. **并发异常处理**:讨论在并发环境中可能出现的异常,以及如何...

    Java开发手册(黄山版)2023

    5. **多线程**:涵盖线程的基本概念,如线程创建、同步机制(synchronized、Lock、Condition等)、线程通信(wait/notify、CountDownLatch、CyclicBarrier、Semaphore)以及并发工具类的使用。 6. **I/O与NIO**:...

    张龙 java se课程笔记

    线程同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和Condition接口。 11. **网络编程**:Java提供了Socket和ServerSocket类进行TCP通信,DatagramSocket和DatagramPacket类...

    java编程思想笔记

    NIO(New IO)是Java 1.4引入的增强版IO,提供了非阻塞I/O操作。 9. **多线程**:Java内置对多线程的支持,通过`Thread`类或实现`Runnable`接口创建线程。同步机制如`synchronized`关键字、`wait()`, `notify()`和`...

    Java 问答式教程

    使用synchronized关键字、wait(), notify()和notifyAll()方法,以及Lock接口(如ReentrantLock)。 这仅仅是Java知识海洋的一小部分。随着学习的深入,你将接触到更复杂的设计模式、数据库连接、Web应用开发(如...

    java学习内容[归类].pdf

    Java多线程机制包括锁(如synchronized关键字)、线程控制(如sleep(), wait(), notify(), notifyAll())以及线程间的协作。I/O编程涉及到流的概念,以及装饰模式在I/O中的应用。网络编程基础涵盖Socket编程,理解...

    JAVA核心知识点整理.zip

    线程同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和Condition对象。 七、反射机制 反射机制允许程序在运行时动态获取类的信息并操作类的对象,包括获取类的属性、方法,创建...

    基础 知识点/面试题总结 : (必看:+1: ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试

    同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock和Condition接口。 八、Java 8及以后的新特性 Java 8引入了Lambda表达式、函数式接口、Stream API、Optional类等,提升了代码简洁性...

    阿里巴巴Java开发手册

    - 避免使用`wait/notify`,优先使用`java.util.concurrent.locks.Condition`。 - 对于高并发场景,推荐使用原子类`java.util.concurrent.atomic`,而非`synchronized`关键字。 5. **数据访问**: - 使用JDBC时,...

    java学习内容.pdf

    多线程:Java提供了丰富的多线程机制,如`synchronized`关键字、`sleep()`、`wait()`、`notify()`和`notifyAll()`,以及线程池`ThreadPoolExecutor`。 I/O编程:Java的I/O流体系基于装饰模式,支持网络通信和文件...

    java线程程序实例

    2. **ReentrantLock**:可重入锁,是synchronized的增强版,提供了更多的灵活性。它支持公平锁和非公平锁,还可以尝试获取锁、中断锁等待等操作。 3. **Semaphore**:信号量,用于限制同时访问特定资源的线程数量。...

    基于Java的源码-电梯模拟程序 v2.0.zip

    Java提供了多种并发工具,如synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock和Condition接口。在电梯模拟程序中,可能需要用到这些机制来确保同一时间只有一个线程能执行特定操作,例如,防止电梯...

    圣思园Java.pdf

    11. **多线程**:深入探讨Java的并发机制,包括锁、`synchronized`关键字、线程通信方法(`sleep()`, `wait()`, `notify()`, `notifyAll()`)等。 12. **I/O编程**:Java的I/O库提供了丰富的类和方法,如装饰模式在...

    java学习内容[文].pdf

    3. 多线程:深入理解Java的多线程机制,包括锁、synchronized关键字、sleep()、wait()、notify()和notifyAll()的用法。 4. I/O编程:了解装饰模式,掌握Java的输入输出流系统,如FileInputStream、FileOutputStream...

    开发资料整理_2021.zip

    NIO(New IO)是Java 1.4引入的增强版IO,支持非阻塞I/O,能更好地处理并发I/O操作。 5. **多线程**:Java提供了内置的多线程支持,可以创建和管理多个执行线程。线程同步机制如synchronized关键字、wait()、notify...

    learn:我学习java过程中的一些练习

    线程间通信则涉及共享数据和同步,Java提供了多种机制,如synchronized关键字、wait()和notify()方法、以及Lock和Condition接口。理解这些机制并能正确地使用它们来避免竞态条件和死锁是关键。 接着,我们来看看...

    SoftwareTechnologyIntroduction:软件技术导论

    同步机制(如synchronized关键字、wait/notify、Lock和Condition)防止了线程间的数据竞争,保证了程序的正确性。 七、Java泛型 泛型是Java 5引入的新特性,增强了类型安全性,允许在编译时检查类型。泛型可用于类...

Global site tag (gtag.js) - Google Analytics