![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 65
风一般的程序媛
这个作者很懒,什么都没留下…
展开
-
ThreadLocal
1. ThreadLocal是Java中所提供的线程本地存储机制,可以利⽤该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意⽅法中获取缓存的数据(局部变量)2. ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象(注意不是ThreadLocal 对象)中都存在⼀个ThreadLocalMap,Map的key为ThreadLocal对象,Map的value为需要缓 存的值 3. 如果在线程池中使⽤ThreadLocal会造成内存泄漏,因为当Thr原创 2021-08-22 16:50:10 · 151 阅读 · 0 评论 -
[Java并发包学习七]解密ThreadLocal
概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误的认知!看看JDK中的源码是怎么写的:This class provides thr转载 2017-09-09 23:37:56 · 190 阅读 · 0 评论 -
volatile、synchronized和ReentrantLock
关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要 从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问 的可见性。关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程 在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性 和排他性volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.sychronized和Reen原创 2021-07-14 22:25:24 · 129 阅读 · 0 评论 -
【Java并发编程艺术】Thread
Thread主要解决并发,即同时处理多任务CompletableFuture是异步,即不需等待,有结果后获取结果CompletableFuture也是通过线程来实现的(可以理解为是Thread的包装),,但是是守护线程(线程池ForkJoinPool),,如果不调用get()方法,可能会在主线程完成时候,守护线程就也结束了,守护线程的程序并不一定可以执行,,因此必须get()而Thread就不存在这样的问题。因此Thread比较适用于不需获取结果的操作。CompletableFut.原创 2021-07-14 14:10:02 · 140 阅读 · 0 评论 -
AQS及原理
AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是一个同步框架,它提供通用机制来原子性管理同步状态、阻塞和唤醒线程,以及维护被阻塞线程的队列。JDK 6中AQS被广泛使用,基于AQS实现的同步器包括:ReentrantLock、Semaphore、ReentrantReadWriteLock、CountDownLatch和FutureTaskAQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果原创 2021-03-01 17:06:41 · 103 阅读 · 0 评论