![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 65
玩葫芦的卷心菜
梦游的后端菜鸡
展开
-
【JUC】-CAS详解
CAS(CompareAndSwap):比较并替换讲到CAS肯定要说到AtomicInteger等一系列原子类比如AtomicInteger自增操作时如何保证原值操作的其中就是利用了CAS自旋锁,CAS通过Unsafe来操作JVM本地方法操作内存指针完成其中一个重要方法 public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, valueOff原创 2021-10-25 06:22:52 · 498 阅读 · 1 评论 -
【JUC】-volatile详解
volatile是Java虚拟机提供的轻量级同步机制,有三大特性:保证可见性,不保证原子性,禁止指令重排列JMM原创 2021-10-25 06:22:27 · 183 阅读 · 0 评论 -
JUC-三种等待唤醒方式
synchronized的wait和notifywait方法会释放对象锁资源后进入等待队列,等待被唤醒notify会唤醒等待队列中的单个线程 static Object objectLock=new Object();' new Thread(()->{ synchronized (objectLock){ System.out.println(Thread.currentThread().getName()+" come in");原创 2021-10-19 09:25:31 · 302 阅读 · 0 评论 -
JUC-AQS源码分析
文章目录阻塞park等待A线程执行完毕,释放锁前置知识CAS可重入锁LockSupport static final Node SHARED = new Node(); static final Node EXCLUSIVE = null; static final int CANCELLED = 1; static final int SIGNAL = -1; s原创 2021-08-17 16:06:36 · 171 阅读 · 0 评论 -
JUC-线程创建的四种方式+原理分析
文章目录一、继承Thread1、创建空线程2、创建Thread线程二、实现Runnable1、代码实现2、实现原理3、继承Thread和实现Runnable的优缺点三、实现Callable交给FutureTask1、Callable2、FutureTask3、RunnableFuture4、Future5、原理分析6、代码实现7、分析结果四、线程池1、原理分析2、代码实现一、继承Thread1、创建空线程 Thread thread=new Thread(); thread.star原创 2021-08-07 19:40:45 · 503 阅读 · 0 评论 -
多线程不安全案例(不安全&synchronized同步解决):买票,银行取钱
同步可以看成排队每个线程进入同步队列,进行操作时出队,想要继续操作时入队进行等待如果线程不排队,一拥而上,资源根本不够分配,而且执行的速度够快,无法保证数据的统一性synchronized:声明方法:锁定当前方法,每个线程使用该方法时都要排队锁定对象:在操作当前对象时,要排队卖门票public class UnsafeTicket { public static void main(String[] args) { BuyTicket buyTicket=new原创 2021-04-17 12:53:03 · 310 阅读 · 0 评论 -
多线程龟兔赛跑(Java)
多线程龟兔赛跑1.龟兔在同一赛道(thread对象使用同一runnable,runnabl就是两对象跑的赛道)2.兔子喜欢睡觉3.超过1000米就赢了 游戏结束gameOverpackage thread.demo1;//龟兔赛跑public class Race implements Runnable { private static String winner;//胜利者 @Override public void run() { boolean f原创 2021-04-14 12:04:33 · 593 阅读 · 2 评论