![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
HelloPageFive
这个作者很懒,什么都没留下…
展开
-
ReentrantLock 第一个线程拿锁(并且只有一个线程)
Lock lock = new ReentrantLock(true); lock.lock(); final void lock() { acquire(1); } public final void acquire(int arg) { if (!tryAcquire(arg) &&//尝试加锁,加锁成功直接退出方法 ...原创 2020-04-01 09:51:57 · 402 阅读 · 0 评论 -
t.interrupt()、t.isInterrupted()、Thread.interrupted()
1 t.interrupt() 给当前线程 中断标志位置为true 2 t.isInterrupted() 返回当前线程 中断标志 3 Thread.interrupted() 返回当前线程状态,并清除中断标志位,即如果当前线程t.isInterrupted()=true,调用Thread.interrupted()后,再次调用t.isInterrupted()=false ```java ...原创 2020-03-30 14:53:53 · 460 阅读 · 0 评论 -
java内存模型
1.内存模型 1.1 现代计算机内存模型 1.1.1 大致图 cpu执行指令速度远远高于内存读写的速度,所以加入了一层和cpu运行速度尽可能差不多的高速缓存来作为cpu和内存之间的缓冲,将数据从内存中读到告诉缓存中,cpu运算节省了读写时间,运算完成后,在将数据同步到内存中 1.1.2 内存模型并发问题 当cpu是多核处理器,访问主内存中同一块数据时,各自完成运算后,那么同步到主内存中就会出现数...原创 2019-12-22 16:04:01 · 90 阅读 · 0 评论 -
java 内存模型 重排序例子
1.重排序 理解 重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段 package com.pgf.pool; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; /* 作者:pgf 时间:2019年12月20日 描述:当m1 和 ...原创 2019-12-20 18:18:54 · 246 阅读 · 0 评论 -
LockSupport的park方法和unpark方法
LockSupport的park方法和unpark方法1.park2.unpark3.调用顺序4.多次调用5.interrupt相应标志位对park不阻塞 1.park 调用方法一般为:LockSupport.park();//当前线程阻塞 2.unpark 调用方法一般为: LockSupport.unpark(w1);//唤醒当前线程 3.调用顺序 当线程先调用了unpark方法后,该线许可为...原创 2019-12-18 15:01:00 · 1243 阅读 · 0 评论