JUC并发编程
文章平均质量分 84
JUC并发编程学习记录
FrozenPenguin
冰冻三尺,非一日之寒;水滴石穿,非一日之功。
展开
-
「 Java并发编程 」 线程停止的方式
在Java中,线程暂停是一种常见的操作,它可以使一个线程暂停执行一段时间,然后再继续执行。这种操作主要用于控制线程的运行状态和调度。线程暂停可以通过多种方式实现,例如:使用Thread.sleep()方法、使用Object.wait()方法等。不同的线程暂停方式适用于不同的场景,开发者需要根据具体情况选择合适的方式。在本篇博文中,我们将会介绍Java中常用的线程暂停方式以及它们的应用场景。原创 2023-04-11 07:30:00 · 2544 阅读 · 0 评论 -
「并发编程实战」接口幂等性设计的最佳实现(8种实现方案)
幂等是一个数学与计算机科学概念。。比如求绝对值的函数,就是幂等的,。计算机科学中,幂等表示一次和多次请求某一个资源应该具有同样的副作用,或者说,多次请求所产生的影响与一次请求执行的影响效果相同。产生原因①用户重复提交:一般是指用户填写好表单信息后,由于响应较慢,从而多次点击提交按钮。②非法调用:指第三方通过逆向手段调试到了接口地址,然后通过爬虫或接口工具多次调用。③失败重试:指分布式项目中,被调用方出现超时或异常时,触发了调用方的重试补偿机制。④重复消息:通常指引入MQ。原创 2023-03-04 07:30:00 · 5804 阅读 · 0 评论 -
「并发编程实战」常见的限流方案
在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。什么是限流呢?限流是限制到达系统的并发请求数量,保证系统能够正常响应部分用户请求,而对于超过限制的流量,则通过拒绝服务的方式保证整体系统的可用性。原创 2023-03-03 08:30:00 · 1509 阅读 · 0 评论 -
「Synchronized与锁升级」锁优化的背景及性能的变化
在Java早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的Mutex Lock来实现的,挂起线程和恢复线程都需要转入内核态去完成,阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态切换需要耗费处理器时间,如果同步代码块中内容过于简单,这种切换的时间可能比用户代码执行的时间还长”,时间成本相对较高,这也是为什么早期的synchronized效率低的原因 .原创 2022-09-22 10:00:00 · 1561 阅读 · 0 评论 -
「JUC并发编程」初识CAS锁(概述、底层原理、原子引用、自旋锁、缺点)
CAS的全称为,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值。经过调查发现,其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,JVM只是封装了汇编调用,那些AtomicInteger类便是使用了这些封装后的接口。简单解释:CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下在旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。...原创 2022-08-30 11:30:26 · 6718 阅读 · 0 评论 -
【JUC并发编程】如何正确使用volatile?
Java 语言中的 volatile 变量可以被看作是一种 ”程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。......原创 2022-08-28 19:24:21 · 1160 阅读 · 0 评论 -
【JUC并发编程】初识Volatile(概念与特性)
volatile是Java中的关键字,用来修饰会被不同线程访问和修改的变量。volatile可以说是java虚拟机提供的最轻量级的同步机制。保证不同线程对这个变量进行操作时的可见性,即变量一旦改变所有线程立即可见。...原创 2022-08-28 14:06:54 · 1188 阅读 · 0 评论 -
「多线程锁」手写死锁案例及排查死锁原因
死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。...原创 2022-08-16 16:15:00 · 1574 阅读 · 2 评论 -
「Juc并发编程」什么是可重入锁?
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。......原创 2022-08-16 12:00:00 · 2754 阅读 · 0 评论 -
【Java多线程】一篇文章彻底解锁八锁现象(狂神说Java)
最近在看狂神老师的JUC课程时遇到了八锁问题,看的时候懵懵懂懂,于是在第二天又看了一遍,并记录了本次笔记,希望对大家有所帮助。时间匆忙的话一定要看文章最后的总结部分!原创 2022-07-12 10:50:12 · 1438 阅读 · 0 评论 -
【Java多线程】CompletableFuture实现多线程异步编排
在Java 8中, 新增加了一个包含50个方法左右的类: CompletableFuture,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法。.........原创 2022-07-05 13:23:43 · 1358 阅读 · 0 评论 -
「 并发编程技术 」剖析Synchronized修饰方法与代码块的区别(附详细代码案例解析)
Synchronized是Java中用于实现线程同步的一种机制,可以用来保证多线程访问共享资源的安全性。在Synchronized机制中,我们可以将Synchronized关键字修饰在方法上或者使用同步代码块来实现线程同步。但是,Synchronized修饰方法与同步代码块之间存在一些区别,本文将深入探讨它们的底层原理。原创 2022-07-11 02:00:40 · 3819 阅读 · 4 评论 -
Java多线程:Runnable实现龟兔赛跑
Java通过实现Runnable简单实现龟兔赛跑游戏。原创 2022-07-10 08:00:00 · 1374 阅读 · 1 评论