![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
编程最小菜鸟
这个作者很懒,什么都没留下…
展开
-
ThreadLocal认识
简介ThreadLocal为每个线程创建一个新的副本,个线程间不会相互影响。用空间换时间。而synchronized用时间换空间public class ThreadLocalDemo { final static ThreadLocal<Person> tl = new ThreadLocal<Person>(); public static void main...原创 2019-12-05 14:35:19 · 93 阅读 · 0 评论 -
模拟阻塞线程池
需求:一个容器中最多5份数据,容器有取和存两个方法,当容器满后,存的线程需要等待,当容器空时,取的线程需要等待。实现1public class Container { private LinkedList<Object> list = new LinkedList<Object>(); private Object obj = new Object(); pri...原创 2019-12-05 14:30:32 · 222 阅读 · 0 评论 -
ReentrantLock使用
ReentrantLock简单使用ReentrantLock为手动锁,必须手动释放锁。创建:Lock lock = new ReentrantLock();加锁: lock.lock();(等同与synchronized(this))手动释放锁: unlock();窥探是否存在锁:boolean tryLock();直接查询是否存在锁boolean tryLock(long tim...原创 2019-12-05 14:18:48 · 162 阅读 · 0 评论 -
CountDownLatch认识和使用
CountDownLatch介绍CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务...原创 2019-12-05 14:06:59 · 205 阅读 · 0 评论 -
synchronized认识和使用
synchronized简介百度百科:synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchro...原创 2019-12-05 11:39:26 · 90 阅读 · 0 评论 -
Volatile认识与应用
VolatileJava语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。volatile详情...原创 2019-12-05 10:33:36 · 76 阅读 · 0 评论