![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发线程
Hello stupid
这个作者很懒,什么都没留下…
展开
-
解决原子性问题
原子性问题原子性问题的源头是线程切换,如果能够禁用线程切换就可以解决原子性的问题,而操作系统做线程切换是依赖CPU中断的,所以禁用CPU发送中断就可以禁止线程切换。在单核时代很容易实现:但是在多核场景下,同一时刻有可能有两个线程同时在执行,一个线程执行在CPU1上,一个线程执行在CPU2上,此时禁止CPU中断,只能保证COU上的线程连续执行,并不能保证同一时刻只有一个线程执行。同一时刻只有一...原创 2019-09-27 19:25:01 · 294 阅读 · 0 评论 -
volatile
VolatileVolatile关键字并不是java语言的特产,古老的C语言也有,它最原始的意义就是禁用CPU缓存。我们先开下面一个列子我们只用volatile关键字修饰了布尔类型的V,在执行write的方法时会将变量“V=true”写入内存,那么我们执行reader方法的时候,会从内存中读取变量v,V=true,那么此时变量X的值是多少呢?这个要看java版本,如果在低于1.5版本上运...原创 2019-09-27 19:23:28 · 159 阅读 · 0 评论 -
用synchronize实现等待-
java语言里,等待-通知机制可以有多种实现方式,比如java语言内置的synchronize配合 wait,notify,notifyAll 这个三个方法就可以实现下图中:左边有一个等待队列,同一时刻,只允许一个线程进入synchronize临界区,当一个线程进入临界区之后,其他的线程只能在左边等待队列里等待。这个等待队列和互斥锁是一对一的关系,每个互斥锁都有自己独立的等待队列在并发程序...原创 2019-09-27 19:23:59 · 219 阅读 · 0 评论