juc
文章平均质量分 56
程序猿小鹏
主开发、以后更新算法(业余)
展开
-
AQS的源码理解
AQS源码理解AQS的成员变量尝试获取锁(修改标志位),立即返回——tryAcquire获取锁(修改标志位),愿意进入队列等待,直到获取——acquire将当前线程封装成一个Node节点——addWaiter判断是否需要挂起当前线程——shouldParkAfterFailedAcquire AQS的成员变量 private volatile int state :用于判断共享资源是否被占用的标记位。0表示未被占用 Node head 、tail :两个节点,一个头结点,一个尾结点 Node的成员变量 2原创 2021-09-23 18:43:30 · 117 阅读 · 0 评论 -
java高并发线程池
java高并发线程池线城池使用方式一池N线程一池一线程可扩容池线城池的底层原理线程池的七个参数的含义线城池底层工作流程拒绝策略AbortPolicy(默认)DiscardPolicyDiscardOldestPolicyCallerRunsPolicy 线城池使用方式 一池N线程 package com.yyp.Executors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; p原创 2021-07-29 18:09:28 · 105 阅读 · 0 评论 -
读写锁的案例
读写锁的案例 package com.yyp.readwrite; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; //资源类 class Mymap{ //创建原创 2021-07-29 12:24:13 · 152 阅读 · 0 评论 -
JUC的三大辅助类
JUC的三大辅助类减少计数CountDownLatch循环栅栏 CyclicBarrier计数信号量 减少计数CountDownLatch CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await方法等待计数器不大于0,然后继续执行await方法之后的语句。” CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这 些线程会阻塞 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程 不会阻塞原创 2021-07-28 15:07:01 · 158 阅读 · 0 评论 -
Callable接口
Callable接口 package com.yyp.callable; import java.util.concurrent.FutureTask; public class demo1 { public static void main(String[] args) { new Thread(new FutureTask<Integer>(()->{ System.out.println(Thread.currentThread(原创 2021-07-28 13:37:15 · 80 阅读 · 0 评论 -
多线程锁理解
多线程锁公平锁和非公平锁可重入锁死锁 公平锁和非公平锁 非公平锁:线程非常容易饿死、效率高 公平锁:线程都会执行、效率相对低 可重入锁 当我们进入锁的内部之后,可以继续进入此锁,简单的来说,就是我们进入一个上锁的方法,我们在方法中可以继续调用此方法(此方法是加锁的,锁是相同的)。 死锁 两个或者两个以上进程在争夺资源过程中,因为争夺资源造成的一种现象。 代码演示: import java.util.concurrent.TimeUnit; public class deadlock { priva原创 2021-07-28 11:44:40 · 129 阅读 · 0 评论 -
集合的线程安全
集合的线程安全集合线程不安全演示解决方案-Vector解决方案-Collections解决方案-CopyOnWriteArrayList 集合线程不安全演示 package com.yyp.demo10; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class demo01 { public static void main(String[] args) { List原创 2021-07-26 21:38:46 · 71 阅读 · 0 评论 -
Lock接口
Lock接口SynchronizedLock接口Synchronized和Lock的区别带通知的实例 Synchronized 实例:三个售票员销售三十张票 package com.yyp.demo02; //创建资源类 class Ticket{ private int number = 300; public synchronized void sale(){ if (number>0){ System.out.println(Thread原创 2021-07-26 20:37:02 · 98 阅读 · 0 评论 -
进程和线程
进程和线程概念状态wait和sleep的区别并发和并行串行模式并行模式并发 概念 进程: 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。 线程: 是操作系统能够进行运算调度的最小单位。它原创 2021-07-26 10:00:35 · 94 阅读 · 0 评论
分享