带着BAT大厂的面试问题去理解请带着这些问题继续后文,会很大程度上帮助你更好地理解相关知识点。什么是 ThreadLocal ? 用来解决什么问题的?说说你对ThreadLocal的理解ThreadLocal是如何实现线程隔离的?为什么ThreadLocal会造成内存泄露? 如何解决还有哪些使用ThreadLocal的应用场景?ThreadLocal简介我们
......
5
0
0
2023-09-17
一、前言AQS中的条件队列相比较前文中的“独占锁”、“共享锁”等比较独立,即便没有条件队列也丝毫不影响诸如 ReentrantLock 、 Semaphore 类的实现,那如此说来条件队列是否就是一个可有可无的产物?答案是否定的,我们来看下直接或间接用到条件队列的 jdk 并发类: ReentrantLock 独占锁经典类 Re
......
5
0
0
2023-09-17
synchronized 作用 synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用: 确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得锁的线程操作完毕后会将所数据刷新到共享内存区;不解决重排序,但保证有序性。1.2 用法: 修饰实例方法synchr
......
5
0
0
2023-09-17
在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。 今天,我给大家一次性把 Java 并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、 自旋锁 、偏向锁等等等等。视频有点长,大家一定要全部看完,保证你会醍醐灌顶。1、锁的由来 在并发编程中,经常会遇到两个以上的 线程 访问同一个共享变量,当同时对共享变量进行读写操作时,就会产生数据
......
6
0
0
2023-09-17
前言 在 Java 开发的web项目中,我们经常会遇到接口响应耗时过长,或者定时任务处理过慢,那在Java中最常见的解决方法就是并行了,想必大家也都不陌生了。 今天的分享主要带大家从一个实际的 串行 场景出发,如何一步步优化,同时也会分享在Java中实现并行处理的多种方式,以及它们之间的区别和优缺点,通过对比总结更加深入的了解并且使用Java中并发编
......
13
0
0
2023-09-09
本文开始介绍并发队列,为后面介绍 线程池 打下基础。并发队列莫非也是 出队 、 入队 操作,还有一个比较重要的点就是如何保证其 线程安全性 ,有些并发队列保证 线程安全 是通过 lock ,有些是通过 CAS 。 我们从 ConcurrentLinkedQueue 开始吧。 1. 介绍 Co
......
11
0
0
2023-09-04
1. 为什么要写这篇文章几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。 但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到 NoSQL 不是解决所有问题的银弹,而 NoSQL vs RDMS 的答案是:“视情况而定”。类似地,去年RxJava 和
......
19
0
0
2023-09-03
本文简要介绍 Java 并发编程方面常用的类和集合,并介绍下其实现原理。 AtomicInteger 可以用原子方式更新int值。类 Atomic boolean 、AtomicInteger、AtomicLong 和 AtomicReference 的实例各自提供对相应类型单个变量的访问和更新。基本的原理都是使用CAS操作: boolean c
......
9
0
0
2023-09-03
目录:一.生产者和消费者模式 二.线上问题定位 三.性能测试 四.异步任务池 当你在进行并发编程时,看着程序的执行速度在自己的优化下运行得越来越快,你会觉得越来越有成就感,这就是并发编程的魅力。但与此同时,并发编程产生的问题和风险可能也会随之而来。一.生产者和消费者模式 线程通信 ,在 多线程 系统中,不同的线程执行不同的任务;如果这些任务之间存在联系,
......
12
0
0
2023-09-02
分治法分治法是计算机领域常用的算法中的其中一个,主要思想就是将将一个规模为N的问题,分解成K个规模较小的子问题,这些子问题相互独立且与原问题性质相同;求解出子问题的解,合并得到原问题的解。 解决问题的思路分割原问题; 求解子问题; 合并子问题的解为原问题的解。 使用场景二分查找,阶乘计算,归并排序,堆排序、快速排序、傅里叶变换都用了分治法的思想。 ForkJ
......
48
0
0
2023-07-20
一、经典的生产者消费者案例上一篇文章我们提到一个应用可以创建多个线程去执行不同的任务,如果这些任务之间有着某种关系,那么线程之间 必须能够通信 来协调完成工作。 生产者消费者问题 (英语:Producer-consumer problem)就是典型的多线程同步案例,它也被称为 有限缓冲问题 (英语:Bounded-buffer problem)。该问题描述了
......
43
0
0
2023-07-17
环境:jdk1.8。关于并发方面的,juc已帮我们提供了很多好用的工具,而谷歌在此基础上做了扩展,使并发编程更容易,这些工具放在guava.jar包中。本文演示几个简单的案例,见一下guava的效果。需要先了解的一些技术:juc中的线程池、Excecutors、ExecutorService、Callable、Futureguava maven配置 <
......
41
0
0
2023-07-17
今天的文章将给大家分享Java并发编程相关的知识点,虽然类似的文章已有很多,但本文将以更贴近实际使用场景的方式进行阐述。具体将对Java常见的并发编程方式和手段进行总结,以便可以从使用角度更好地感知Java并发编程带来的效果,从而为后续更深入的理解Java并发机制进行铺垫。 Java多线程概述在Java中使用多线程是提高程序并发响应能力的重要手段,但同时它也
......
54
0
0
2023-07-17
带着BAT大厂的面试问题去理解请带着这些问题继续后文,会很大程度上帮助你更好地理解相关知识点。什么是AQS? 为什么它是核心?AQS的核心思想是什么? 它是怎么实现的? 底层数据结构等AQS有哪些核心的方法?AQS定义什么样的资源获取方式? AQS定义了两种资源获取方式:独占(只有一个线程能访问执行,又根据是否按队列的顺序分为公平锁和非公平锁,如Reentr
......
49
0
0
2023-07-11
什么是JUC? JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西 该包的位置位于java下面的rt.jar包下面 4大常用并发工具类:CountDownLatchCyclicBarrierSemaphore ExChangerCountDownLatch:CountDownLatch,俗称闭锁,作
......
41
0
0
2023-07-09