![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 88
JUC的基础知识
圆锥曲线丶
但愿吉祥
展开
-
并发编程 volatile关键字详解
第一颗CPU修改了x的数据,还没有刷回主存,此时第二颗CPU,从主存中读取了未修改的缓存行,而此时第一颗CPU修改的数据刷回主存,这时就出现,第二颗CPU读取的数据和主存不一致的情况。,线程对所有变量的操作都是先对变量进行拷贝,然后在工作内存中进行,不能直接操作主内存中的变量;,实际上并不存在,描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。,而a=1这条语句还没有被执行的时候,线程other先执行了y=a这条语句,这个时候a还是a=0;..原创 2022-07-22 16:43:13 · 407 阅读 · 1 评论 -
JUC并发编程 wait notify详解
首先,wait(),notify(),notifyAll()都不属于Thread类,而是属于Object基础类,也就是每个对象都有wait(),notify(),notifyAll()的功能,因为每个对象都有锁,锁是每个对象的基础,当然操作锁的方法也是最基础了。wait()方法的作用是释放该对象的锁,进入WaitSet等待区,从而让其他线程就机会获取对象的锁。无限制等待,直到notify()为止;如下图所示,wait()方法会使得运行状态的线程状态改变为等待状态,而wait(long)则是转变为。.....原创 2022-07-20 15:50:33 · 296 阅读 · 0 评论 -
JUC_synchronized关键字详解
从而这个锁的状态变成normal,这是因为偏向锁的对象MarkWord中存储了线程的id,这个线程id在操作系统层面是占用54位的,如果你调用了该对象的hashcode,那么此时hashcode会被赋值并且需要存储到markword,而且hashcode是占31位,如果不撤销偏向状态(会把偏向锁存储的线程id给清除),那么这个对象的hashcode将不能存放到该对象的markword中;如果锁的对象不相同那么锁对象它们关联的monitor就不是同一个,就不会有阻塞线程的效果);......原创 2022-07-18 20:26:52 · 155 阅读 · 0 评论 -
线程-interrupt方法详解
会让此线程产生一个InterruptedException异常,结束线程的运行。但如果该异常被线程捕获住,该线程依然可以自行决定后续处理(终止运行,继续运行,做一些善后工作等等),而且这个打断阻塞中的线程是会重置标状态为。这里不建议是使用stop方法,使用stop方法虽然可以强行终止正在运行或挂起的线程,但使用stop方法是很危险的。,线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断状态是否为true)我们如何在一个线程中暂停另一个线程的运行?...原创 2022-07-15 11:20:54 · 2531 阅读 · 1 评论