
多线程
一个技术渣渣
这个作者很懒,什么都没留下…
展开
-
深入分析AQS实现原理
简单解释一下J.U.C,是JDK中提供的并发工具包,java.util.concurrent。里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join等。从Lock作为切入点我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通用手段,也是我们工作中用得比较多的方式。Lock APILock是一个接口,方法定义如下...原创 2020-05-05 12:54:35 · 985 阅读 · 0 评论 -
ThreadLocal的使用及原理分析
什么是ThreadLocalThreadLocal,简单翻译过来就是本地线程,但是直接这么翻译很难理解ThreadLocal的作用,如果换一种说法,可以称为线程本地存储。简单来说,就是ThreadLocal为共享变量在每个线程中都创建一个副本,每个线程可以访问自己内部的副本变量。这样做的好处是可以保证共享变量在多线程环境下访问的线程安全性ThreadLocal的使用没有使用Thread...原创 2020-05-05 12:51:24 · 442 阅读 · 0 评论 -
Volatile的作用及原理
内容导航volatile的作用 什么是可见性 volatile源码分析volatile的作用在多线程中,volatile和synchronized都起到非常重要的作用,synchronized是通过加锁来实现线程的安全性。而volatile的主要作用是在多处理器开发中保证共享变量对于多线程的可见性。可见性的意思是,当一个线程修改一个共享变量时,另外一个线程能读取到修改以后的值。接下...原创 2020-05-05 12:48:01 · 3397 阅读 · 0 评论 -
Synchronized原理分析
内容导航什么时候需要用Synchronized synchronized的使用 synchronized的实现原理分析什么时候需要用Synchronized想必大家对synchronized都不陌生,主要作用是在多个线程操作共享数据的时候,保证对共享数据访问的线程安全性。比如在下面这个图片中,两个线程对于i这个共享变量同时做i++递增操作,那么这个时候对于i这个值来说就存在...原创 2020-05-05 11:52:27 · 257 阅读 · 0 评论 -
ThreadPoolExecutor拒绝策略
前言谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当...原创 2020-04-18 22:51:04 · 1009 阅读 · 0 评论 -
Java线程池原理解析
一、为什么要用线程池 降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控二、ThreadPoolExecutor线程池类参数详解参数 说...原创 2020-03-26 21:48:26 · 135 阅读 · 0 评论 -
ThreadLocal的用途
声明:本文使用的是JDK 1.8首先我们来看一下JDK的文档介绍:/** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@c...原创 2020-03-24 23:15:40 · 168 阅读 · 0 评论 -
乐观锁、悲观锁
我今天就简单聊一下乐观锁和悲观锁,他们对应的实现 CAS ,Synchronized,ReentrantLockCAS(Compare And Swap 比较并且替换)是乐观锁的一种实现方式,是一种轻量级锁,JUC 中很多工具类的实现就是基于 CAS 的。CAS 是怎么实现线程安全的?线程在读取数据时不进行加锁,在准备写回数据时,先去查询原值,操作的时候比较原值是否修改,若未...原创 2020-03-24 16:19:40 · 146 阅读 · 0 评论 -
【并发】CountDownLatch整理
1. 简介CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。 CountDownLatch 在 JDK 1.5 被引入。 存在于 java.util.concurrent 包下。 例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。 2. CountDownLatch 的原理CountDown...原创 2020-03-11 09:58:52 · 231 阅读 · 0 评论 -
【并发】同步和锁
为了简单起见,本教程的示例代码使用了在这里定义的两个辅助方法,sleep(seconds) 和 stop(executor)Synchronized当我们编写多线程代码访问可共享的变量时需要特别注意,下面是一个多线程去改变一个整数的例子。定义一个变量 count,定义一个方法 increment() 使 count 增加 1..当多个线程同时调用 increment() 时就会...原创 2020-03-11 16:33:48 · 184 阅读 · 0 评论