随笔分类 -  多线程

摘要:ReentrantLock与Synchronized区别在于后者是JVM实现,前者是JDK实现,属于Java对象,使用的时候必须有明确的加锁(Lock)和解锁(Release)方法,否则可能会造成死锁。 先来查看ReentrantLock的继承关系(下图),实现了Lock和Serializable接 阅读全文
posted @ 2019-04-09 16:02 一响贪欢 阅读(1164) 评论(0) 推荐(0) 编辑
摘要:Synchronized是我们常用来维持线程安全时使用的一个关键字,内部通过monitor(监视器锁,由C++实现)来实现。而monitor本质又是依赖底层操作系统的mutex lock来实现。而操作系统实现线程之间的切换,需要从用户态切换到核心态,这个的成本非常高,状态之间的转换需要相对较长的时间 阅读全文
posted @ 2019-04-04 15:41 一响贪欢 阅读(3213) 评论(0) 推荐(0) 编辑
摘要:1.ConcurrentHashMap继承关系 ConcurrentHashMap继承了AbstractMap类,同时实现了ConcurrentMap接口。 2.ConcurrentHashMap构造函数 3.ConcurrentHashMap添加元素 3.1添加元素核心类 源码解析: 1.在con 阅读全文
posted @ 2019-03-27 17:34 一响贪欢 阅读(334) 评论(0) 推荐(0) 编辑
摘要:1.如何实现多线程 1.1实现Runnable接口,实现run()方法。 1.2继承Thread接口,重写run()方法。 1.3实现Callable接口,实现call()方法。 2.Runnable、Thread、Callable三种方式实现多线程的区别 2.1Runnable Runnable接 阅读全文
posted @ 2019-03-25 17:28 一响贪欢 阅读(3842) 评论(0) 推荐(0) 编辑
摘要:ScheduledTheadPool线程池的特点在于可以延迟执行任务,也可以周期性执行任务。 创建线程池 定义一个简单的任务 执行任务的几种方法: 1、立即执行某任务 输出结果: 结果分析: 程序先打印当前时间:'11:31:14',然后进行for循环,添加两个任务进入线程池,添加方式为立即执行,因 阅读全文
posted @ 2018-02-26 12:05 一响贪欢 阅读(841) 评论(0) 推荐(0) 编辑
摘要:为什么使用线程池: 1、创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 2、线程并发数量过多,抢占系统资源从而导致阻塞。 3、对线程进行一些简单的管理。 在java中,线程池的类为ThreadPoolExecutor,首先来看一下该类的继承关系 大抵所有的线程池都 阅读全文
posted @ 2018-02-24 17:30 一响贪欢 阅读(342) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示