1. 原子性布尔 AtomicBoolean AtomicBoolean 类为我们提供了一个可以用原子方式进行读和写的布尔值,它还拥有一些先进的原子性操作,比如 compareAndSet()。AtomicBoolean 类位于 java.util.concurrent.atomic 包,完整类名是为 java.util.concurrent.atomic ......
219
0
0
2024-03-03
摘要:我们已经知道,synchronized 是 Java 的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题。本文以synchronized与Loc ......
240
0
0
2024-02-29
第1章 简介线程的优势:①发挥多处理器的强大优势 ②建模的简单性 ③异步事件的简化处理④相应更灵敏的用户界面线程带来的风险:①安全性问②活跃性问题③性能问题第2章 线程安全性2.1什么是线程安全性当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这 ......
209
0
0
2024-02-27
第十四章 java中的daemon threadjava中有两种类型的 thread ,user threads 和 daemon threads。User threads是高优先级的thread,JVM将会等待所有的User Threads运行完毕之后才会结束运行。daemon threads是低优先级的 Thread ,它的作用是为User Thread ......
207
0
0
2024-02-19
什么是原子类?有何用不可分割一个操作是不可中断的,即使并发下juc.atomic包下,都是原子特性的原子类和锁都是为了保证并发下的线程安全,不过原子类相比于锁,有一定的优势:***粒度更细,将竞争的粒度缩小到变量级别。***效率高:在竞争不是很高的情况下:原子类的效率往往比锁的效率高。第二个优势怎么说,。为何原子类在高度竞争的时候,效率会降低因为原子操作利用 ......
216
0
0
2024-01-21
上一篇中学习了线程安全相关的知识,知道了线程安全问题主要来自JMM的设计,集中在主内存和线程的工作内存而导致的内存可见性问题,及重排序导致的问题。上一篇也提到共享数据会出现可见性和竞争现象,如果多线程间没有共享的数据也就是说多线程间并没有协作完成一件事情,那么,多线程就不能发挥优势,不能带来巨大的价值。而共享数据如何处理,一个很简单的想法就是依次去读写共享变 ......
216
0
0
2024-01-08
一、前言经过了前面两章的铺垫,终于要切入正题了,本章也是整个AQS的核心之一 从本章开始,我们要精读AQS源码,在欣赏它的同时也要学会质疑它。当然本文不会带着大家逐行过源码(会有“只在此山中,云深不知处”的弊端),而是从功能入手,对其架构进行逐层剖析,在核心位置重点解读,并提出质疑;虽然AQS源码读起来比较“跳”,但我还是建议大家花时间及精力去好好读它 本章 ......
248
0
0
2024-01-01
Spring、Netty、Mybatis 等框架的代码中大量运用了 Java 多线程编程技巧。并发编程处理的恰当与否,将直接影响架构的性能。 本文通过对这些框架源码的分析,结合并发编程的常用技巧,来讲解多线程编程在这些主流框架中的应用。Java 内存模型JVM 规范定义了 Java 内存模型来屏蔽掉各种操作系统、虚拟机实现厂商和硬件的内存访问差异,以确保 J ......
234
0
0
2023-12-31
大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性 ......
219
0
0
2023-12-10
在接下来的15分钟里,您将学习如何通过线程、任务和执行器服务并行执行代码。 三大部分重点: 你为什么不会用 多线程 ,因为你不懂生产者与消费者。 一般分三步: 多线程一般用来执行这样的操作。比如说取数据。去多个平台拿 几千个数据,可以分多个线程去拿。然后将取来的数据放在并发容器中。后面的处理从容器中拿数据 去处理。 相当于分了两步走。 取数据 处理数据 写数 ......
275
0
0
2023-10-12
缓存可能是软件中使用最多的优化技术了,比如:在最核心的 CPU 中,就存在着多级缓存;为了消除内存和存储之间的差异,各种类似 Redis 的缓存框架更是层出不穷。 缓存的优化效果是非常好的,它既可以让原本载入非常缓慢的页面,瞬间秒开,也能让本是压力山大的数据库,瞬间清闲下来。 缓存 , 本质 上是为了协调两个速度差异非常大的组件,如下图所示 ......
350
0
0
2023-10-08
优质文章,及时送达作者:大道方圆链接:cnblogs.com/xdecode/p/9137793.html本文主要讲解几种常见并行模式, 具体目录结构如下图.单例单例是最常见的一种设计模式, 一般用于全局对象管理, 比如xml配置读写之类的.一般分为懒汉式, 饿汉式.懒汉式: 方法上加synchronized public static synchroni ......
282
0
0
2023-10-07
带着BAT大厂的面试问题去理解请带着这些问题继续后文,会很大程度上帮助你更好地理解相关知识点。什么是 ThreadLocal ? 用来解决什么问题的?说说你对ThreadLocal的理解ThreadLocal是如何实现线程隔离的?为什么ThreadLocal会造成内存泄露? 如何解决还有哪些使用ThreadLocal的应用场景?ThreadLocal简介我们 ......
290
0
0
2023-09-17
一、前言AQS中的条件队列相比较前文中的“独占锁”、“共享锁”等比较独立,即便没有条件队列也丝毫不影响诸如 ReentrantLock 、 Semaphore 类的实现,那如此说来条件队列是否就是一个可有可无的产物?答案是否定的,我们来看下直接或间接用到条件队列的 jdk 并发类: ReentrantLock 独占锁经典类 Re ......
299
0
0
2023-09-17
synchronized 作用 synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用: 确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得锁的线程操作完毕后会将所数据刷新到共享内存区;不解决重排序,但保证有序性。1.2 用法: 修饰实例方法synchr ......
284
0
0
2023-09-17