JavaCurrent
并发编程
秋夜无霜
好学Java
展开
-
Java并发之AQS同步器学习
文章目录AQS队列同步器学习CLH队列入列acquire(int arg)tryAcquire(int arg)addWaiter(Node mode)enq(Node )acquireQueued(final Node node, int arg)shouldParkAfterFailedAcquire(Node pred, Node node)parkAndCheckInterrupt()ca...转载 2020-03-05 15:07:09 · 135 阅读 · 0 评论 -
static方法操作static变量时会引发线程安全问题?
文章目录1、示例2、分析3、HOW4、WHY5、DO6、结论1、示例/** * @description: * @Date : 2020/3/3 下午6:30 * @Author : 石冬冬-Seig Heil */public class MultiOpTest { public static void main(String[] args) { for ...原创 2020-03-04 09:34:37 · 6454 阅读 · 0 评论 -
秒杀架构模型设计
文章目录一:秒杀应该考虑哪些问题1.1:超卖问题1.2:高并发1.3:接口防刷1.4:秒杀url1.5:数据库设计1.6:大量请求问题二:秒杀系统的设计和技术方案2.1:秒杀系统数据库设计2.2:秒杀url的设计2.3:秒杀页面静态化2.4:单体redis升级为集群redis2.5:使用nginx2.6:精简sql2.7:redis预减库存2.8:接口限流2.8.1:前端限流2.8.2:同一个用户...转载 2019-12-30 18:29:49 · 120 阅读 · 0 评论 -
Java并发(2)- synchronized与CAS
文章目录1.引言2.synchronized3.synchronized的三种使用方式4.synchronized的底层原理5.JDK1.6对synchronized的优化6.synchronized的等待唤醒机制7.CAS原文转载:https://www.cnblogs.com/konck/p/9393135.html1.引言上一篇文章中我们说过,volatile通过lock指令保证了...转载 2019-12-28 14:13:59 · 115 阅读 · 0 评论 -
Java并发(1)- 聊聊Volatile
文章目录1.引言2.volatile的“部分”原子性3.volatile的可见性4.volatile的有序性5.volatile的两个典型使用场景5.1 用来标示状态量5.2 double-check问题6.volatile背后的原理原文转自:https://www.cnblogs.com/konck/p/9336940.html1.引言谈到volatile关键字,大多数开发者都有一定了...转载 2019-12-28 11:44:43 · 121 阅读 · 0 评论 -
Java 进程间文件锁FileLock详解
最近需要在两个进程中对同一个文件进行操作,正好Java 提供了文件锁FileLock类,利用这个类可以控制不同程序(JVM)对同一文件的并发访问,实现进程间文件同步操作。 FileLock是java 1.4 版本后出现的一个类,它可以通过对一个可写文件(w)加锁,保证同时只有一个进程可以拿到文件的锁,这个进程从而可以对文件做访问;而其它拿不到锁的进程要么选择被挂起等待,要么选择去做一些转载 2017-11-21 18:30:18 · 2078 阅读 · 0 评论 -
Java并发之线程池ThreadPoolExecutor源码分析学习
文章目录线程池学习一:线程池的优势二:线程池的创建三:ThreadPoolExecutor源码分析3.1 AtomicInteger ctl1.CAPACITY2.runState3.部分方法介绍3.2 核心方法源码分析1.execute(Runnable command)方法2.addWorker(Runnable firstTask, boolean core)3.addWorkerFaile...转载 2020-03-05 14:22:29 · 155 阅读 · 0 评论 -
Java源码分析:HashMap 1.8 相对于1.7 到底更新了什么?
文章目录前言1. 简介2. 数据结构:引入了 红黑树2.1 主要介绍2.2 存储流程2.3 数组元素 & 链表节点的 实现类2.4 红黑树节点 实现类3. 具体使用3.1 主要使用API(方法、函数)3.2 使用流程4. 基础知识:HashMap中的重要参数(变量)5. 源码分析总结6. 源码总结7. 与 JDK 1.7 的区别7.1 数据结构7.2 获取数据时(获取数据 类似)7.3 扩...转载 2020-03-01 14:20:50 · 186 阅读 · 0 评论 -
多线程几种同步方法
文章目录为何要使用同步1.同步方法2.同步代码块3.使用重入锁实现线程同步4.使用特殊域变量(volatile)实现线程同步5.使用局部变量实现线程同步6.使用原子变量实现线程同步7.使用阻塞队列实现线程同步几种常见阻塞队列1、BlockingQueue (常用)2、ArrayBlockingQueue (数组阻塞队列)3、DelayQueue (延迟队列)4、LinkedBlockingQueu...原创 2019-12-25 11:46:44 · 726 阅读 · 1 评论 -
Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/java/nio_reactor/Java I/O模型同步 vs. 异步同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待转载 2017-03-15 21:19:55 · 535 阅读 · 0 评论 -
Java进阶(四)线程间通信剖析
原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/java/thread_communication/CountDownLatchCountDownLatch适用场景Java多线程编程中经常会碰到这样一种场景——某个线程需要等待一个或多个线程操作结束(或达到某种状转载 2017-03-15 21:16:59 · 367 阅读 · 0 评论 -
Java进阶(三)多线程开发关键技术
原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/java/multi_thread/sleep和wait到底什么区别其实这个问题应该这么问——sleep和wait有什么相同点。因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点。wait方法是Obje转载 2017-03-15 21:16:15 · 245 阅读 · 0 评论 -
Synchronized同步的考虑
当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。2种使用方法 Synchronized method() synchronized(this){/转载 2015-11-23 21:35:05 · 286 阅读 · 0 评论 -
一个多线程和队列的实例演示
功能需求:设备策略升级详细描述:用户可以不定期的创建1条策略来升级选择的多个设备从a版本到b版本 解决方案 java代码 创建个无界带自动回收机制的线程池ExecutorService threadPool = Executors.newCachedThreadPool();转载 2015-11-23 21:34:33 · 493 阅读 · 0 评论 -
java自带线程池和队列详细讲解
Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是转载 2015-11-23 21:31:18 · 287 阅读 · 0 评论