
java高并发编程
文章平均质量分 89
Fighting_Man
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池原理解析
线程池无非就是调用方不断的提交任务,线程池有一组线程不断的重任务队列中获取任务,如图所示:线程池中到任务队列要设置多长,如果是无界,那么很有可能将应用内存耗尽;不是无界队列,那么当队列满了要如何处理?线程池中线程的个数要如何设置,是否要动态变化?每次调用方提交任务时,是直接创建新的线程处理还是放入到队列中等待线程来处理。原创 2022-11-03 22:09:46 · 392 阅读 · 0 评论 -
Lock锁之公平锁与非公平锁(AQS实现原理)
在Concurrent包中的锁都是可重入锁,一般都命名为ReentrantX。可重入锁是指当一个线程调用object.lock拿到锁,进入互斥区后,再次调用object.lock,仍然可以拿到该锁。 synchtonized关键字就是可重入锁。原创 2022-10-22 20:00:20 · 4467 阅读 · 0 评论 -
【读写锁原理分析】
当state为0时,说明没有线程占有锁,当state不等于0时,有可能是写锁或者是读锁,两者不能同时成立,这时只能通过sharedCount和exclusiveCount方法判断到底是读锁还是写锁占用了改线程。对于非公平,写锁不管三七二十一上来就直接抢锁,而读锁不行,因为读线程和读线程是不互斥的,假设当前线程被读线程占用,其他读线程还一直不公平的抢锁,可能导致写线程永远拿不到锁,所以当发现队列第一个元素是写线程时,读线程应该被阻塞。读线程之间不互斥,读线程和写线程互斥,写线程之间也互斥。原创 2022-10-16 10:54:14 · 515 阅读 · 0 评论 -
CAS
CAS原理CAS(Compare And Swap)是用于多线程同步的原子性指令,CAS主要通过三个值来实现,原始内存的值,给定的预期值,给定更新值,只有当原始内存的值与给定的预期值相等的情况下,才将更新值返回。假设有两个线程A,B同时执行a=a+1根据JMM内存模型,A,B线程分别拷贝一份副本到自己的内存中,假设此时A线程挂起,线程B对a的值进行修改,线程B首先会判断拷贝的副本值是否与共...原创 2019-09-09 19:26:16 · 495 阅读 · 0 评论 -
CountDownLatch CyclicBarrier Semaphore的使用
CountDownLatch让一些线程阻塞直到另一些线程执行完成,有两个方法,一个是countDown(),一个是await(),调用countDown的线程不会被阻塞,调用await的线程才会被阻塞。countDown方法将计数器减一,只有当计数器为0时,调用await的线程才会被执行。public class CountLatchTest { CountDownLatch count ...原创 2019-09-09 19:35:45 · 185 阅读 · 0 评论 -
java中的锁
java中各种锁的简单实现于介绍原创 2019-09-10 14:37:51 · 175 阅读 · 0 评论