并发编程
文章平均质量分 95
vanchine
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
探讨线程原理(1)
进程和线程进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,有独立的地址(内存)空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程;一个进程崩溃后,在保护模式下不会对其它进程产生影响多进程在linux系统中效率比多线程开销小,对于落地项目需要关注多进程之间的通讯。进程通俗点就是一个软件,所以linux中多节点部署效率更好。线程:CPU调度的最小单位,是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。线程有自己的堆栈和局部变量,但原创 2021-01-10 15:53:03 · 359 阅读 · 1 评论 -
阻塞队列原理和线程池源码浅析
阻塞队列非阻塞队列是一个先进先出的单向队列(Queue),而BlockingQueue阻塞队列实际是非阻塞队列的一个加强,之所以是阻塞队列最主要的是实现take和put,当阻塞队列满时,put会一直阻塞直到拿到数据,或者响应中断退出;当队列空时,take元素,队列也会阻塞直到队列可用。阻塞的意思就是此条线程会处于等待卡死状态,解锁的条件是队列中有另一条线程存入或取出数据了,就会解锁,就相当于队列是仓库,仓库没有货了就生产,有货就能消费,锁条件是notFull和notEmpty。Throws原创 2020-12-27 02:20:49 · 568 阅读 · 0 评论 -
深入理解CAS和AQS
CAS(compare and swap)悲观锁和乐观锁悲观锁:悲观的认为每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,比如synchronized和数据库层面的 for update,加锁和释放锁会导致比较多的上下文切换和调度延时,引起性能问题//保证方法每次只能被一个线程访问public synchronized void test() {}//select 不会主动加锁,for update加锁select * from tb原创 2020-12-27 01:48:12 · 1986 阅读 · 0 评论
分享