page contents
王昭君
王昭君

性别: 北京 - 北京市 注册于 2022-09-13

向TA求助
2080金币数
4990 经验值
0个粉丝
主页被访问 4623 次

63 个回答

0 赞同

什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞 队列...

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变 为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素 的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放 元素...

回答于 2022-10-22 14:17

0 赞同

ThreadLocal 内存泄漏解决方案?

 每次使用完 ThreadLocal,都调用它的 remove()方法,清 除数据。 在使用线程池的情况下,没有及时清理 ThreadLocal,不仅 是内存泄漏的问题,更严重的是可能导致业务逻辑出现问 题。所以,使用 ThreadLocal 就跟加锁完要解锁一样,用 完就清理。

回答于 2022-10-22 14:17

0 赞同

ThreadLocal 造成内存泄漏的原因?

ThreadLocalMap 中使用的 key 为 ThreadLocal 的弱引用,而 value 是强引 用。所以,如果 ThreadLocal 没有被外部强引用的情况下,在垃圾回收的 时候,key 会被清理掉,而 value 不会被清理掉。这样一来, ThreadLocalMap 中就会出现 key 为 null 的 Entry。假如我们不做任何措施 的话,value 永远无法被 GC 回收,这个...

回答于 2022-10-22 14:17

0 赞同

什么是线程局部变量?

线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多 个线程间共享。Java 提供 ThreadLocal 类来支持线程局部变量,是 一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使 用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命 周期比任何应用变量的生命周期都要长。任何线程局部变量...

回答于 2022-10-22 14:16

0 赞同

ThreadLocal 是什么?有哪些使用场景?

ThreadLocal 是一个本地线程副本变量工具类,在每个线程中都创建 了一个 ThreadLocalMap 对象,简单说 ThreadLocal 就是一种以空 间换时间的做法,每个线程可以访问自己内部 ThreadLocalMap 对象 内的 value。通过这种方式,避免资源在多线程间共享。 原理:线程局部变量是局限于线程内部的变量,属于线程自身所有,...

回答于 2022-10-20 11:57

0 赞同

CopyOnWriteArrayList 是什么,可以用于什么应用场景? 有哪些优...

CopyOnWriteArrayList 是一个并发容器。有很多人称它是线程安全 的,我认为这句话不严谨,缺少一个前提条件,那就是非复合场景下 操作它是线程安全的。 CopyOnWriteArrayList(免锁容器)的好处之一是当多个迭代器同时遍历 和修改这个列表时,不会抛出 ConcurrentModificationException。在 CopyOnWriteArrayList 中,写...

回答于 2022-10-20 11:55

0 赞同

SynchronizedMap 和 ConcurrentHashMap 有什么区 别?

SynchronizedMap 一次锁住整张表来保证线程安全,所以每次只能有 一个线程来访为 map。 ConcurrentHashMap 使用分段锁来保证在多线程下的性能。 ConcurrentHashMap 中则是一次锁住一个桶。ConcurrentHashMap 默认将 hash 表分为 16 个桶,诸如 get,put,remove 等常用操作 只锁当前需要用到的桶。

回答于 2022-10-20 11:55

0 赞同

Java 中的同步集合与并发集合有什么区别?

同步集合与并发集合都为多线程和并发提供了合适的线程安全的集 合,不过并发集合的可扩展性更高。在 Java1.5 之前程序员们只有同 步集合来用且在多线程并发的时候会导致争用,阻碍了系统的扩展 性。Java5 介绍了并发集合像 ConcurrentHashMap,不仅提供线程安 全还用锁分离和内部分区等现代技术提高了可扩展性。

回答于 2022-10-20 11:53

0 赞同

什么是并发容器的实现?

何为同步容器:可以简单地理解为通过 synchronized 来实现同步的 容器,如果有多个线程调用同步容器的方法,它们将会串行执行。比 如 Vector,Hashtable,以及 Collections.synchronizedSet, synchronizedList 等方法返回的容器。可以通过查看 Vector, Hashtable 等这些同步容器的实现代码,可以看到这些容器实现线程...

回答于 2022-10-20 11:53

0 赞同

Java 中 ConcurrentHashMap 的并发度是什么?

ConcurrentHashMap 把实际 map 划分成若干部分来实现它的可扩展 性和线程安全。这种划分是使用并发度获得的,它是 ConcurrentHashMap 类构造函数的一个可选参数,默认值为 16,这 样在多线程情况下就能避免争用。

回答于 2022-10-20 11:52