并发编程简析
闲来也无事
欢迎留言,一起交流!
展开
-
1、Lock接口以及ReentrantLock可重入锁
Java并发编程简析并发编程在Java实际开发中,占有举足轻重的地位,在接下来的篇幅中,以java.util.concurrent包下重要的、常用的接口、实现类为切入点,逐步分析并发编程。下文的一些插图借鉴了《Java并发编程的艺术》!当然笔者水平有限,还请指正错误!1、 Lock 接口自JDK1.5开始,Java提供了Lock接口,实现锁的机制,相对于Synchronize,Lock更为轻量级、同时增加了锁的可操作性。public interface Lock { void lock()原创 2020-08-10 17:21:22 · 3221 阅读 · 0 评论 -
2、ReadWriteLock
2、 ReadWriteLock 接口ReentrantReadWriteLock是ReentrentLock接口实现之一,具有以下特性:提供了非公平模式(默认)和公平模式。支持重入。支持锁降级。写锁可降级为读锁,但是读锁不可升级为写锁。支持中断。读锁和写锁都支持锁获取期间的中断。支持Condition。ReadWriteLock提供了一对锁,读锁和写锁。其中读锁是共享锁,同一时间可以有多个线程访问;写锁是独占锁(排它锁),同一时间只能有一个线程访问。相对于可重入锁,读写锁通过读写分离、读原创 2020-08-10 17:25:28 · 3069 阅读 · 0 评论 -
3、Condition 接口
3、Condition 接口前文已经对Lock、ReentrentLock接口进行了简单的分析,但是还有一部分遗漏,就是Condition接口。摘自JDK官方定义:Condition直译过来为“条件”,也可以叫做“条件队列”或“条件变量”,以下统称“条件变量” Condition将Object监视器方法(wait、notify、notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,可以为多个对象实现等待/通知机制。其中,Lock替代了synchronized方法和语句原创 2020-11-14 10:54:13 · 3034 阅读 · 0 评论 -
4、ThreadPoolExecutor 线程池
1、 ThreadPoolExecutor 线程池降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如指掌。2、创建ThreadPoolExecutor、参数、提交任务// 1public ThreadPoolExecutor(原创 2020-11-11 15:43:58 · 3060 阅读 · 0 评论 -
5、ScheduledThreadPoolExecutor
5、ScheduledThreadPoolExecutorScheduledThreadPoolExecutor可另外调度在给定延迟之后运行的命令,或定期执行。 ScheduledThreadPoolExecutor的功能与Timer类似,但ScheduledThreadPoolExecutor功能更强大、更灵活。Timer对应的是单个后台线程,而ScheduledThreadPoolExecutor可以在构造函数中指定多个对应的后台线程数。ScheduledThreadPoolExecutor提交、执原创 2020-11-16 08:59:38 · 3291 阅读 · 0 评论 -
6、FutureTask
6、FutureTask可取消的异步计算。该类提供了一个Future的基本实现,提供了启动和取消计算、查询计算是否完成以及检索计算结果的方法。结果只能在计算完成后才能检索; 如果计算尚未完成,则get方法将阻塞。一旦计算完成,则无法重新启动或取消计算(除非使用runAndReset()调用计算 )。FutureTask可用于包装Callable或Runnable对象。因为FutureTask实现Runnable,一个FutureTask可以提交到一个Executor执行。除了作为独立类之外,此类还提原创 2020-11-16 09:00:54 · 3065 阅读 · 0 评论