ReentrantLock中对共享资源的独占主要是通过AQS中的成员变量state来控制,通过CAS操作state值来实现加锁和释放锁。同时那些没有获取到锁的线程就会被放到AQS中维护的一个FIFO双向队列中,将它们阻塞起来,当state值被修改成0的时候(有线程释放锁了),这些线程会被唤醒去尝试修改state的值(获取锁)。
huizhang43 阅读:2 评论:0 2024-08-22
ReferenceQueue 是 Java 中的一个用于管理引用对象的队列。它与软引用、弱引用和虚引用配合使用,当被引用的对象被回收时,相应的引用对象会被加入到这个队列中。这有助于跟踪对象的回收情况,实现资源的有效管理。
huizhang43 阅读:2 评论:0 2024-08-22
Semaphore 是 Java 中的一种同步工具类。它通过控制一定数量的许可证来管理对共享资源的并发访问。可以限制同时访问资源的线程数量,当一个线程获取许可证后才能访问资源,使用完后释放许可证,方便实现资源的并发控制。
huizhang43 阅读:2 评论:0 2024-08-22
ThreadLocal 为每个使用它的线程提供独立的变量副本。它能实现线程间数据隔离,避免多线程对共享变量的并发访问问题。不同线程可独立操作自己的变量,互不干扰,常用于存储线程局部的状态信息,如用户会话数据等。
huizhang43 阅读:3 评论:0 2024-08-22
TreeMap 是 Java 中的一种有序映射容器。它基于红黑树数据结构实现,能自动对键进行排序。在多线程环境下若要保证线程安全需额外同步措施。适用于需要按照特定顺序存储和检索键值对的场景,提供高效的查找、插入和删除操作。
huizhang43 阅读:2 评论:0 2024-08-22