
多线程
kavito
这个作者很懒,什么都没留下…
展开
-
多线程运行状态,sleep(),wait(),yield(),join()的理解
开始前,先看下线程的运行状态。线程生命周期一个线程从创建到死亡,经历了哪些状态呢创建(new)状态: 准备好了一个多线程的对象 就绪/可运行(runnable)状态: 调用了start()方法, 等待CPU进行调度 运行(running)状态: 执行run()方法 阻塞(blocked)状态: 暂时停止执行, 可能将资源交给其它线程使用 死亡(dead)状态: 线程销毁1、新...原创 2018-09-02 13:48:42 · 1996 阅读 · 5 评论 -
Java锁之ReentrantReadWriteLock
概述ReentrantReadWriteLock是Lock的另一种实现方式,我们已经知道了ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。相对于排他锁,提高了并发性。在实际应用中,大部分情况下对共享数据(如缓存)的访问都是读操作远多于写操作,这时Reent...原创 2019-07-30 10:27:26 · 402 阅读 · 0 评论 -
Java锁之自旋锁
自旋锁是指定尝试获取锁的线程不会立即堵塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上线文切换的消耗,缺点就是循环会消耗 CPU。手写一个自旋锁import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;/** * 手写一个自旋锁 * @author k...原创 2019-07-30 00:09:33 · 405 阅读 · 0 评论 -
深入理解Java线程池
线程是程序运行中一个非常重要的概念。通常情况下,程序从静态代码,到解析为机器码被加载入内存开始动态运行,就转变为一个进程。也可以说,程序是一个静态概念,程序运行起来后就变成了一个进程,进程是计算机分配CPU、内存等各种资源的基本单位。 我们平时在电脑中开启一些程序时,比如开启eclipse,idea等开发工具时,会发现程序启动较慢,这是因为进程运行所依赖的资源较多,故开启一个进...原创 2018-08-11 00:01:48 · 299 阅读 · 0 评论 -
自定义线程池要点总结
自定义线程池的核心:ThreadPoolExecutor为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制,其中在java.util.concurrent包下,是JDK并发包的核心,比如我们熟知的Executors。Executors扮演着线程工厂的角色,我们通过它可以创建特定功能的线程池,而这些线程池背后的就是:ThreadPoolExecutor...转载 2018-08-31 16:07:29 · 895 阅读 · 0 评论