随笔分类 -  JUC

摘要:排它锁 排它锁⼜称独占锁,获得了以后既能读⼜能写,其他没有获得锁的线程不能读也不能写,典型的synchronized就是排它锁 共享锁 共享锁⼜称读锁,获得了共享锁以后可以查看但⽆法修改和删除数据,其他线程也能获得共享锁,也可以查看但不能修改和删除数据 在没有读写锁之前,我们虽然保证了线程安全,但是 阅读全文
posted @ 2023-12-13 19:55 会秃头的小白 阅读(445) 评论(0) 推荐(0) 编辑
摘要:在⼤多数情况下,锁的申请都是⾮公平的,也就是说,线程1⾸先请求锁A,接着线程2也请求了锁A。那么当锁A可⽤时,是线程1可获得锁还是线程2可获得锁呢?这是不⼀定的,系统只是会从这个锁的等待队列中随机挑选⼀个,因此不能保证其公平性。这就好⽐买票不排队,⼤家都围在售票窗⼝前,售票员忙的焦头烂额,也顾及不上 阅读全文
posted @ 2023-12-13 19:47 会秃头的小白 阅读(9) 评论(0) 推荐(0) 编辑
摘要:可重⼊锁(⼜名递归锁) 是指在同⼀个线程在外层⽅法获取锁的时候,再进⼊该线程的内层⽅法会⾃动获取锁(前提,锁对象得是同⼀个对象),不会因为之前已经获取过还没释放⽽阻塞。 如果是1个有 synchronized 修饰的递归调⽤⽅法,程序第2次进⼊被⾃⼰阻塞了岂不是天⼤的笑话,出现了作茧⾃缚。所以Jav 阅读全文
posted @ 2023-12-12 22:46 会秃头的小白 阅读(86) 评论(0) 推荐(0) 编辑
摘要:今天早上做了大数据的实验 遇到的问题: 下午进行了软件案例需求分析的验收 晚上做了一会英语题 写了erp——绩效考核系统的数据字典 学了一会juc 阅读全文
posted @ 2023-12-12 22:42 会秃头的小白 阅读(2) 评论(0) 推荐(0) 编辑
摘要:整体的区别其实是有四个:1、所属类不同: sleep是线程中的方法,但是wait是Object中的方法。2、语法不同: sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。3、参数不同: sleep必须设置参数时间,wait可以不设置时间,不设置 阅读全文
posted @ 2023-12-12 22:36 会秃头的小白 阅读(16) 评论(0) 推荐(0) 编辑
摘要:CAS缺点:循环时间⻓开销很⼤ 引出来ABA问题??? 假设这样⼀种场景,当第⼀个线程执⾏CAS(V,E,U)操作。在获取到当前变量V,准备修改为新值U前,另外两个线程已连续修改了两次变量V的值,使得该值⼜恢复为旧值,这样的话,我们就⽆法 正确判断这个变量是否已被修改过,如下图: 用 AtomicS 阅读全文
posted @ 2023-12-12 22:29 会秃头的小白 阅读(12) 评论(0) 推荐(0) 编辑
摘要:⾃旋锁(spinlock):是指当⼀个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。 ⾃旋锁与互斥锁⽐较类似,它们都是为了解决对某项资源的互斥使⽤。⽆论是互斥锁,还是⾃旋锁,在任何时刻,最多只能有⼀个保持者,也就说, 阅读全文
posted @ 2023-12-12 22:23 会秃头的小白 阅读(7) 评论(0) 推荐(0) 编辑
摘要:比较并且替换算法 compare and swap的缩写,中⽂翻译成⽐较并交换,实现并发算法时常⽤到的⼀种技术。它包含三个 操作数——内存位置、预期原值及更新值。 执⾏CAS操作的时候,将内存位置的值与预期原值⽐较: 如果相匹配,那么处理器会⾃动将该位置值更新为新值, 如果不匹配,处理器不做任何操作 阅读全文
posted @ 2023-12-12 22:20 会秃头的小白 阅读(5) 评论(0) 推荐(0) 编辑
摘要:悲观锁 认为⾃⼰在使⽤数据的时候⼀定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。 synchronized关键字和Lock的实现类都是悲观锁 适合写操作多的场景,先加锁可以保证写操作时数据正确。 调用方式 // 悲观锁的调⽤⽅式 public synchroniz 阅读全文
posted @ 2023-12-07 22:53 会秃头的小白 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2023-12-07 22:49 会秃头的小白 阅读(6) 评论(0) 推荐(0) 编辑
摘要:① java8引⼊的,相⽐较是⼀个⽐较新的类 ② ⾼并发下LogAdder⽐AtomicLog效率⾼,不过本质是空间换时间 ③ 竞争激烈的时候,LongAdder把不同线程对应到不同的Cell上进⾏修改,降低了冲突的概率,是多段锁的理念,提⾼了并发性 ④ LongAdder适合的场景是统计求和计数的 阅读全文
posted @ 2023-12-07 22:47 会秃头的小白 阅读(8) 评论(0) 推荐(0) 编辑
摘要:AtomicInteger ai = new AtomicInteger(1); //1.获取值 System.out.println("ai.get = "+ai.get()); //2.增加指定值并获取 System.out.println("ai.addAndGet(2) = "+ai.add 阅读全文
posted @ 2023-12-05 21:57 会秃头的小白 阅读(5) 评论(0) 推荐(0) 编辑
摘要:不可分割 ⼀个操作是不可中断的,即便是多线程的情况下也可以保证 java.util.concurrent.atomic 原⼦类的作⽤和锁类似,是为了保证并发情况下的线程安全。不过原⼦类相对于锁有⼀点的优势 粒度更细:原⼦变量可以把竞争范围缩⼩到变量级别,这是我们可以获得的最细的粒度的情况了,通常锁的 阅读全文
posted @ 2023-12-05 21:56 会秃头的小白 阅读(2) 评论(0) 推荐(0) 编辑
摘要:as-if-serial语义: 不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序结果不能被改变。 为了遵守as-if-serial语义,编译器和处理器不会对存在数据依赖关系的操作做重排序,因为这种重排序会改变结果。 happens-before原则: 程序次序规则(Program Or 阅读全文
posted @ 2023-12-04 19:54 会秃头的小白 阅读(24) 评论(0) 推荐(0) 编辑
摘要:两个特性 1.可见性 2.禁止指令重排 volatile保证不了原子性,原子性需要加锁。 package org.example.c3; /*** * 可见性 * * // 对一个变量解锁之前,必须先把此变量同步回主存中。这样解锁后,线程就可以访问到被修改后的值。 // 所以Synchronized 阅读全文
posted @ 2023-12-04 14:26 会秃头的小白 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1.破坏临界资源 (临界资源破坏了 原子性 可见性 有序性) 直接不使用临界资源 2.只读 使用final,只读 不写 3.局部变量 每个线程的局部变量会存在栈帧中,会在每个线程的栈帧内存中被创建多份,因此不存在共享。 ThreadLocal ThreadLocal也就是线程本地变量。如果你创建了⼀ 阅读全文
posted @ 2023-12-04 14:14 会秃头的小白 阅读(11) 评论(0) 推荐(0) 编辑
摘要:什么是线程安全: ⼤⽩话: 多线程下并发同时对共享数据进⾏读写,会造成数据混乱 = 线程不安全 当多线程并发访问临界资源时,如果破坏其原⼦性、可⻅性、有序性,可能会造成数据不⼀致。 临界资源:共享资源(同⼀对象)同时读写,⼀次仅允许⼀个线程使⽤,才可保证其正确性。 原子性:单一,不可分割的操作 可见 阅读全文
posted @ 2023-12-04 14:01 会秃头的小白 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1、线程池的拒绝策略 等待队列已经排满了,再也塞不下新任务了,同时,线程池中的max线程也达到了,⽆法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。 2、JDK内置的拒绝策略 AbortPolicy(默认):直接抛出RejectedExecutionException异常阻⽌ 阅读全文
posted @ 2023-12-03 23:16 会秃头的小白 阅读(112) 评论(0) 推荐(0) 编辑
摘要:package org.example.test2; import java.util.concurrent.*; public class CustomeThread { public static void main(String[] args) { ExecutorService thread 阅读全文
posted @ 2023-12-03 21:55 会秃头的小白 阅读(9) 评论(0) 推荐(0) 编辑
摘要:corePoolSize:核心线程池数量 maximumPookSize:最大线程数量 keepAliveTime:非核心线程的空闲状态的存活时间 unit:时间单位 workQueue:工作队列(阻塞队列) threadFactory:线程工厂(创建线程) handler:拒绝策略 阅读全文
posted @ 2023-12-03 21:38 会秃头的小白 阅读(3) 评论(0) 推荐(0) 编辑

  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
世间美好与你环环相扣 - 柏松
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 尹初七

作曲 : 柏松

编曲 : 彭圣杰

偏偏秉烛夜游

偏偏秉烛夜游

午夜星辰 似奔走之友

爱你每个结痂伤口

酿成的陈年烈酒

入喉尚算可口

入喉尚算可口

怎么泪水 还偶尔失守

邀你细看心中缺口

裂缝中留存 温柔

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

让樱花偷偷 吻你额头

让世间美好 与你环环相扣

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

当樱花开的纷纷扬扬

当世间美好 与你环环相扣

特别鸣谢:槿葵,我们的海报制作妹妹。

原唱:柏松

吉他:柏松

和声:柏松

录音:柏松

混音:张强

点击右上角即可分享
微信分享提示