
JUC并发
Java 并发
Woo_home
努力努力再努力
展开
-
深入理解 CAS
Unsafe是 CAS 的核心类,由于 Java 方法无法直接访问底层系统,需要通过本地(native)方法来访问,Unsafe 相当于一个后门,基于该类可以直接操作特定内存的数据。Unsafe 类存在于 sun.misc 包中,其内部方法操作可以像 C 的指针一样直接操作内存,因为 Java 中 CAS 操作的执行依赖于 Unsafe 类的方法注意 Unsafe 类中的所有方法都是 nat...原创 2020-08-13 10:52:06 · 2857 阅读 · 2 评论 -
Java 锁的理解
文章目录公平锁与非公平锁非公平锁公平锁关于公平锁与非公平锁的区别可重入锁(也叫作递归锁)举例自旋锁自旋锁的好处举例独占锁(写锁)/共享锁(读锁)/互斥锁举例(未使用读写锁)举例(使用读写锁)公平锁与非公平锁 用过并发包的朋友对这个应该不会陌生,ReentrantLock 是 Java 的 JUC(java.util.concurrent)包中提供的一种可重入锁,是一种递归无阻塞的同步机制。ReentrantLock 等同于synchronized关键字,但是 ReentrantLock 提供了比原创 2020-08-08 10:52:33 · 2328 阅读 · 0 评论 -
JUC —— CountDownLatch 的使用
文章目录什么是 CountDownLatch?示例CountDownLatch 的构造函数静态内部类 SyncCountDownLatch 常用的方法await() 方法acquireSharedInterruptibly(int arg)tryAcquireShared(int arg)tryAcquireShared(int acquires)doAcquireSharedInterrupti...原创 2020-06-08 10:27:51 · 4895 阅读 · 0 评论 -
线程池的底层实现原理
文章目录newFixedThreadPool(int nThread)newSingleThreadExecutor()newCachedThreadPool()线程池的七大参数corePoolSizemaximumPoolSizekeepAliveTimeunitworkQueuethreadFactoryhandler线程池的底层工作原理线程池用哪个?生产中如何设置合理参数newFixedT...原创 2020-05-16 11:15:19 · 7006 阅读 · 0 评论 -
谈谈线程池的三大方法
文章目录为什么使用线程池?线程池如何使用?架构说明Executors.newFixedThreadPool(int nThreads)举例Executors.newSingleThreadExecutor()举例Executors.newCachedThreadPool()举例为什么使用线程池?线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这个任务,如果...原创 2020-05-16 11:14:57 · 4828 阅读 · 0 评论 -
谈谈 ArrayBlockingQueue 的使用
文章目录什么是 BlockingQueue?简介定义操作分解添加元素移除元素动画演示抛出异常IllegalStateExceptionadd(E e)NoSuchElementException特殊值offer(E e)poll()阻塞超时什么是 BlockingQueue?简介 BlockingQueue 是由数组支持的有界阻塞队列。此队列对元素FIFO(先进先出)进行排序。队列的开...原创 2020-04-25 09:58:53 · 8713 阅读 · 0 评论 -
深入浅出 CopyOnWriteArrayList
文章目录什么是 CopyOnWriteArrayList?CopyOnWriteCopyOnWriteArrayList 的实现原理add(E e) 方法getArray()setArray(Object[] a)什么是 CopyOnWriteArrayList?CopyOnWriteArrayList 我们可以拆分为两个词来理解,一个是 CopyOnWrite,一个是 ArrayList,A...原创 2020-04-16 10:05:34 · 3973 阅读 · 0 评论 -
解决 ArrayList 的线程不安全
文章目录前文为什么说 ArrayList 是线程不安全的?故障现象导致原因解决方法优化速度前文ArrayList 的使用方法深入理解 ArrayList 深入理解 LinkedList深入理解 Vector为什么说 ArrayList 是线程不安全的?看过我之前写的深入理解 ArrayList 的朋友们应该都知道 ArrayList 是线程安全的,但是为什么说 ArrayList 是...原创 2020-04-12 10:54:22 · 3488 阅读 · 1 评论 -
fail-fast 与 fail-safe 的区别
文章目录什么是 fail-fast?原理使用场景什么是 fail-safe?原理fail-safe 有什么缺点吗?使用场景什么是 fail-fast?fail-fast(快速失败)是在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出 ConcurrentModificationException 异常原理迭代器在遍历的时候直接访问集合中的内...原创 2020-04-11 10:36:23 · 2942 阅读 · 0 评论 -
Condition 的简单使用
文章目录什么是 Condition?Condition 的定义Condition 中的方法await()await(long time,TimeUnit unit)awaitNanos(long nanosTimeout)awaitUninterruptibly()awaitUntil(Date deadline)signal()signalAll()举例:(Condition 的使用)什么是 ...原创 2020-03-20 10:03:07 · 2099 阅读 · 0 评论 -
Lock 接口的简单使用
文章目录什么是 Lock?锁和同步块之间的区别?Lock 的定义Lock 中的方法lock()lockInterruptibly()tryLock()tryLock(long time,TimeUnit unit)unlock()举例:(Lock 的使用)什么是 Lock?Lock 的中文意思指的是锁,Lock 是 java.util.concurrent.locks 包下的一个接口,该接口作...原创 2020-03-02 10:28:33 · 1583 阅读 · 0 评论 -
ReadWriteLock 的简单使用
ReadWriteLock 是 java.util.concurrent.locks 包下的一个接口,该接口允许一次读取多个线程,但一次只能写入一个线程读锁:如果没有线程锁定 ReadWriteLock 进行写入,则多线程可以访问读锁写锁:如果没有线程正在读或写,那么一个线程可以访问写锁锁方法以下是 Lock 类中可用的重要方法列表方法描述public Lock ...原创 2020-02-24 10:20:05 · 1347 阅读 · 1 评论 -
谈谈对ReentrantLock的理解
什么是ReentrantLock?ReentrantLock 是 Java 的 JUC(java.util.concurrent)包中提供的一种可重入锁,是一种递归无阻塞的同步机制。ReentrantLock 等同于synchronized关键字,但是 ReentrantLock 提供了比 synchronized 更强大,更灵活的锁机制,可以减少死锁发生的概率ReentrantLock与sy...原创 2019-11-29 09:26:18 · 1977 阅读 · 0 评论