
并发编程
文章平均质量分 89
coffee_babe
让学习成为一种享受,
脑图、设计图请见https://www.processon.com/u/60e12f2b637689510d6cdc81
github主页:https://github.com/2over
展开
-
AQS之ReentrantLock&ReenReadWriteLock
当锁对象被其他线程占有时,其他线程会检查锁对象是否被人持有,如果没有被人持有,则会查看队列是否形成,如果队列有人在排队,则将自己进行排队.如果没有人排队,则将锁对象的占有者设置为自身.简而言之,线程来加锁,验证锁对象是否被人持有,如果有人持有则进行排队,如果没有别人持有,则检查队列是否有人在排队,没有排队就占有锁.此处先不考虑CAS。当锁对象释放锁时.会顺序地将队列中的线程唤醒.这就是公平锁.原创 2021-06-09 15:01:46 · 240 阅读 · 1 评论 -
pthread_create函数和Synchronized加锁流程
在Java中我们知道调用Thread.start()方法可以使得一个线程处于一个就绪状态.有的同学可能会纳闷,为什么不是立刻执行?原因在于Java中的线程模型是和OS(Operation System)一一对应的.Java层面创建了一个线程的概念模型,Thread在交给JVM之后,JVM会去OS中申请CPU时间片轮转,如果申请到了资源,进而在OS中创建线程,JVM到OS这个过程调用了JNI.让C++去执行相关函数,进而调用OS的pthread_create方法.这个方法会在下方进行讲解.原创 2021-05-12 17:54:32 · 622 阅读 · 0 评论