![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java高并发
文章平均质量分 62
学习Java高并发的历程
昵称无限重复
15年互联网大厂经验,现自主创业,有团队,可接任意行业项目,包括不限于bug调试、技术培训、代码讲解、简历优化。有需求的加微信:498826643。
展开
-
AQS线程同步器-Semaphore(信号量同步器)
Semaphore同步器的作用是控制共享资源的最大可访问数量,或者定义最多允许多少个线程对共享资源同时进行访问。一个典型的运行就是实现池化机制,如对象池、连接池等。原创 2023-11-22 14:06:24 · 49 阅读 · 0 评论 -
AQS线程同步器-CyclicBarrier(循环栅栏同步器)
循环栅栏同步器,多个线程处在同一个点时(所有线程都调用了await()方法),开始继续执行。并且可以执行reset()方法后可重复使用。原创 2023-11-22 13:54:51 · 65 阅读 · 0 评论 -
AQS线程同步器-CountDownLatch(倒计时同步器)
CountDownLatch是AQS的一个实现类,主要提供了对多个线程进行协调、控制的作用,如作为开关,控制多个线程同时开始工作,或者在主线程等待所有子线程的执行完成。CountDownLatch相当于一个倒计时的实现,每个线程都可以进行递减,待递减到0时,说明时间到了,或者全部线程的功能做都完成了,此时主线程可以阻塞返回。原创 2023-11-22 13:07:12 · 150 阅读 · 0 评论 -
AQS线程同步器
被唤醒时,则从WAITING或TIME_WAITING状态改为RUNABLE,等待CPU的调度执行,在AQS的实现中,主要是使用LockSupport这个工具类的用于阻塞和唤醒线程的相关方法来对线程的状态进行控制。公平策略的有限是线程不会被饿死,缺点是执行慢的线程会影响执行快的线程。线程同步器是协调多个线程对共享资源的访问,AQS提供了一个基于先入先出队列实现的线程同步器基础框架,具体的线程同步器实现类只需要关注共享资源的访问控制(或者说是可共享资源数量的定义)。,将线程放在队列中,等待执行。原创 2023-11-22 11:33:07 · 27 阅读 · 0 评论 -
可重入读写锁ReentrantReadWriteLock的使用
ReentrantLock和synchronized一样,是互斥锁,只能有一个线程访问,在读、写共享资源的时候,性能是比较差的,而ReentrantReadWriteLock是有两个锁,一个读锁、一个写锁,可以做到多个线程读取共享资源。ReentrantReadWriteLock是基于AQS实现的,所以所有的等待执行线程都是存在先入先出的队列中的。一个线程执行完之后,会唤醒下一个队列中的线程节点。原创 2023-11-15 14:03:20 · 65 阅读 · 0 评论 -
可重入锁ReentrantLock的使用
ReentrantLock是基于AQS框架实现的,主要采用的是CAS机制及自旋策略的方式,在性能是高于synchronized的,并且ReentrantLock提供了更加灵活的方法,加锁、释放锁、是否有其他线程等待执行、是否已被其他线程获取锁,均提供了方法,相比较synchronized,非常的灵活。原创 2023-11-15 12:19:26 · 53 阅读 · 0 评论 -
Java并发队列-BlockingDeque(三)
BlockingDeque为先入先出双端队列,意思就是可以从该队列的头部和尾部同时获取数据。原创 2023-11-14 13:02:20 · 29 阅读 · 0 评论 -
Java并发队列-BlockingQueue(二)
3.线程安全:BlockingQueue是线程安全的,遵循内存可见性的happend-before原则,即往队列写入数据的线程优于从队列读取或删除数据的线程,从而保证一个线程的写对其他线程可见。(5) poll timeout:超时版本方法,阻塞等待指定时间,如果超时还没有读到数据,则退出阻塞。(1) element方法,抛异常,其中element方法只是读取队列头的数据,不会删除队列头的数据。(4) peek方法:非阻塞读取,与element一样,也只是读取队列头数据,不会删除队列头的数据。原创 2023-11-10 10:21:24 · 30 阅读 · 0 评论 -
多线程对文件做加解密(线程池)
文件多线程加解密原创 2023-10-27 15:21:18 · 197 阅读 · 0 评论 -
ThreadPoolExecutor线程池的使用
ThreadPoolExecutor类的使用及小demo原创 2023-10-22 12:21:12 · 71 阅读 · 0 评论 -
ThreadLocal线程本地变量的使用
使用ThreadLocal对共享变量进行封装,可使该共享变量对其他线程不可见。每个线程都会有一个该共享变量的副本,线程对自己的变量副本操作,不会影响到其他线程。以达到线程隔离,线程安全的目的。原创 2023-10-21 15:04:18 · 43 阅读 · 1 评论 -
volatile关键字
volatile关键字的使用及其特性原创 2023-10-20 12:51:43 · 45 阅读 · 1 评论 -
synchronized和wait()、notify()、notifyAll()的使用
使用synchronized关键字和wait()、notify()、notifyAll()方法原创 2023-10-19 16:51:42 · 163 阅读 · 1 评论 -
线程概念及原理
线程是CPU执行的最小单元,现在的CPU都是多核的,所以会多个核心同时执行多个CPU,这就是并发执行。原创 2023-10-19 12:31:19 · 45 阅读 · 1 评论