
Java多线程
文章平均质量分 85
scuwangjun
谦虚,谨慎,爱学习
展开
-
Java锁Lock的种类
Java锁Lock的种类 我们平时听到用到的锁有很多种:公平锁/非公平锁、可重入锁/不可重入锁、共享锁/排他锁、乐观锁/悲观锁、分段锁、偏向锁/轻量级锁/重量级锁、自旋锁。其实这些都是在不同维度或者锁优化角度对锁的一种叫法,我们在程序中用到的也就那么几种,比如synchronized,ReentrantLock,ReentrantReadWriteLock。 ReentrantLock类 Jdk1...原创 2020-04-24 15:21:04 · 1212 阅读 · 0 评论 -
Java线程状态及其转换
线程状态及其转换 一、线程状态 Java中定义线程的状态有6种,可以查看Thread类的State枚举: public static enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; private State() {} } 初始(NEW):新创建了一个线...原创 2020-03-26 15:05:38 · 750 阅读 · 0 评论 -
Fork/Join框架
Fork/Join框架 1. Fork/Join框架简介 Fork/Join框架是java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果得到大任务结果的框架。Fork指的就是把一个大任务分割成若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。 比如计算1+2+3+4+5+……+10000,可以分割成10个子...原创 2018-06-03 16:43:59 · 111 阅读 · 0 评论 -
AtomicInteger原理
AtomicInteger的原理 java的并发原子包里面提供了很多可以进行原子操作的类,比如: AtomicInteger AtomicBoolean AtomicLong AtomicReference 等等,一共分为四类:原子更新基本类型(3个)、原子更新数组、原子更新引用和原子更新属性(字段)。、提供这些原子类的目的就是为了解决基本类型操作的非原子性导致在多线程并发情况下引发的问...原创 2018-05-27 23:19:13 · 421 阅读 · 0 评论 -
Java线程池
Java线程池 1. 简介 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互,这个时候使用线程池可以提升性能,尤其是需要创建大量声明周期很短暂的线程时。Java中的线程池是运用场景最多的并发框架。 线程池类似于数据库连接池,在系统启动的时候即创建大量空闲的线程,可以将一个线程任务提交给线程池执行,当任务执行完后,线程不会死亡,而是再次返回线程池中成为空闲状态。 使用线...原创 2018-06-01 13:03:01 · 139 阅读 · 0 评论 -
Java锁优化
Java锁优化 应用程序在并发环境下会产生很多问题,通常情况下,我们可以通过加锁来解决多线程对临界资源的访问问题。但是加锁往往会成为系统的瓶颈,因为加锁和释放锁会涉及到与操作系统的交互,会有很大的性能问题。那么这个时候基于锁的优化手段就显得很重要了。 一般情况下,可以从两个角度进行锁优化:对单个锁算法的优化和对锁粒度的细分。 1. 单个锁的优化 自旋锁: 非自旋锁在未获取...原创 2018-06-02 11:07:01 · 169 阅读 · 0 评论