- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 Semaphore浅析
背景在之前的文章中介绍了ReentrantLock、Condition和CountDownLatch这些在JAVA多线程中常用的类,它们各有各的使用场景。ReentrantLock通常用于需要可重入锁定、带超时时间的获取锁等场景,Condition通常用于将线程加入条件等待队列/唤醒的场景,CountDownLatch通常用于在程序执行过程中设置等待点,待一定数额的线程全部到达等待点之后集合在...
2018-09-08 21:56:05 656
原创 CountDownLatch浅析
背景前边的文章中已经介绍了JAVA多线程并发工程实践中一批常用的类,比如最为核心的AQS(AbstractQueuedSynchronizer),基本上JAVA多线程并发实践中的常用类的实现都与它能扯上关系;比如ReentrantLock,它实现了可重入的锁,一定程度上弥补了synchronized关键字的不足;比如Condition,它与ReentrantLock相结合,实现了条件等待队列,...
2018-09-08 18:40:13 1440
原创 Condition浅析
背景我们在谈到多线程并发访问临界资源的时候,通常会想到Object类的monitor锁和wait/notify(条件等待/通知)操作。很多同学会想问,既然有了加锁/解锁机制,为什么还要引入条件等待/通知操作呢?原因在于,当A线程对临界资源加锁后(排他锁),其他线程将无法再次获取该临界资源,直到A线程将锁释放。如果A线程执行很久,那么其他线程将在很长一段时间内无法持有临界资源的锁。但是对于Obj...
2018-09-07 21:43:32 397
原创 ReentrantLock浅析
背景在之前的文章中提到了多线程并行操作在工程实践中的重要作用,也提到了如何保持临界资源和串行代码段的线程安全性是十分必要的。在计算机领域,是采用锁来保证线程安全性的。JAVA提供了多种锁的机制,比如早期的synchronized关键字,以它的简单易用被很多早期代码所采纳。但是后来开发者们发现,synchronized关键字没有提供很好的超时机制,且当多线程需要持有的锁相互依赖时容易导致死锁,因...
2018-09-06 23:03:13 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人