E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
JUC源码系列
Java多线程进阶(三一)—— J.U.C之collections框架:BlockingQueue接口
本文首发于一世流云专栏:https://segmentfault.com/blog...一、引言从本节开始,我们将介绍
juc
-collections框架中的“阻塞队列”部分。
·
2021-02-23 09:19
java多线程
Java多线程进阶(十二)—— J.U.C之atomic框架:Unsafe类
本文首发于一世流云的专栏:https://segmentfault.com/blog...一、Unsafe简介在正式的开讲
juc
-atomic框架系列之前,有必要先来了解下Java中的Unsafe类。
·
2021-02-23 09:43
java多线程
Java多线程进阶(八)—— J.U.C之locks框架:AQS的Conditon等待(3)
关于Conditon接口的介绍,可以参见:Java多线程进阶(二)——
juc
-locks锁框架:接口。二、Condition接口的实现J.U.C包提供了Cond
·
2021-02-23 09:12
java多线程
Java多线程进阶(五)—— J.U.C之locks框架:LockSupport
本文首发于一世流云的专栏:https://segmentfault.com/blog...一、LockSupport类简介LockSupport类,是
JUC
包中的一个工具类,是用来创建锁和其他同步类的基本线程阻塞原语
·
2021-02-23 09:11
java多线程
Java多线程进阶(二)—— J.U.C之locks框架:接口
本文首发于一世流云的专栏:https://segmentfault.com/blog...本系列文章中所说的
juc
-locks锁框架就是指java.util.concurrent.locks包,该包提供了一系列基础的锁工具
·
2021-02-23 09:10
java多线程
Interview-
JUC
Catalog1线程池原理1.1ThreadPoolExecutor构造器1.2拒绝策略1.3线程池工作过程1.4ExectorService四种线程池1.5BlockingQueue2Java阻塞队列原理2.1阻塞队列的主要方法2.2Java常用阻塞队列3synchronized原理3.1synchronized特点3.2synchronized作用范围3.3synchronized核心组件3.
allen锅
·
2021-02-22 17:58
通俗易懂的
JUC
源码剖析-CompletionService
前言相信大多数人对ExecutorService比较熟悉,那么CompletionService是什么东东呢?使用场景我们来看JDK官方doc给的栗子,假设现在有个计算问题,伪代码可抽象为Resultcompute(),且有一组解决方案,每个方案都会返回结果Result,我们希望并行执行这些方案,然后采取一定策略去决定使用哪个方案的结果。比如,使用最先返回结果的方案,然后取消执行其他方案的线程。代
·
2021-02-21 15:28
java
通俗易懂的
JUC
源码剖析-CompletionService
前言相信大多数人对ExecutorService比较熟悉,那么CompletionService是什么东东呢?使用场景我们来看JDK官方doc给的栗子,假设现在有个计算问题,伪代码可抽象为Resultcompute(),且有一组解决方案,每个方案都会返回结果Result,我们希望并行执行这些方案,然后采取一定策略去决定使用哪个方案的结果。比如,使用最先返回结果的方案,然后取消执行其他方案的线程。代
·
2021-02-21 14:11
java
通俗易懂的
JUC
源码剖析-FutureTask
前言实现原理先来看类结构publicclassFutureTaskimplementsRunnableFuture{}publicinterfaceRunnableFutureextendsRunnable,Future{}publicinterfaceFuture{//booleancancel(booleanmayInterruptIfRunning);//booleanisCancelled
·
2021-02-20 01:26
java
通俗易懂的
JUC
源码剖析-CompletableFuture
前言CompletableFuture是JDK1.8新增的类。它实现了CompletionStage接口和Future接口。Future接口用来描述一个线程异步执行的结果,我们想要获取结果时只能通过isDone()轮询或者get()阻塞式的获取,这显然违背了异步编程的初衷。CompletableFuture吸收了Guava的设计思想,加入了许多扩展功能,使得我们能够更优雅地获取线程异步执行结果。使
·
2021-02-20 01:55
java
通俗易懂的
JUC
源码剖析-FutureTask
前言实现原理先来看类结构publicclassFutureTaskimplementsRunnableFuture{}publicinterfaceRunnableFutureextendsRunnable,Future{}publicinterfaceFuture{//booleancancel(booleanmayInterruptIfRunning);//booleanisCancelled
·
2021-02-20 01:45
java
通俗易懂的
JUC
源码剖析-CompletableFuture
前言CompletableFuture是JDK1.8新增的类。它实现了CompletionStage接口和Future接口。Future接口用来描述一个线程异步执行的结果,我们想要获取结果时只能通过isDone()轮询或者get()阻塞式的获取,这显然违背了异步编程的初衷。CompletableFuture吸收了Guava的设计思想,加入了许多扩展功能,使得我们能够更优雅地获取线程异步执行结果。使
·
2021-02-20 01:45
java
mybatis
源码系列
第二篇-Mybatis的架构与关键组件
引子诸葛亮读书"观其大略,不求甚解“,嘿嘿,我感觉刚开始学习知识也得有个大略,暂时不明白细节没有关系,mybatis说白了就是对jdbc的封装,jdbc先来复习下吧,嘿嘿。publicclassJdbcTest{publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException{//1获取数据库连接Stringur
coderduck
·
2021-02-19 16:15
mybatis
源码
orm
mysql
springmvc
通俗易懂的
JUC
源码剖析-ForkJoinPool
前言ForkJoinPool常用于将大任务分解(Fork)成若干小任务并行执行,然后再把每个小任务的执行结果合并起来(Join)得到大任务的最终结果。下面是示意图(ps:盗网上网上盗的图,禁止套娃!)ForkJoinPool通常配合ForkJoinTask一起使用,ForkJoinTask代表一个任务,它是个抽象类,它的常见子类有RecursiveTask和RecursiveAction,其中Re
·
2021-02-18 23:09
java
通俗易懂的
JUC
源码剖析-ForkJoinPool
前言ForkJoinPool常用于将大任务分解(Fork)成若干小任务并行执行,然后再把每个小任务的执行结果合并起来(Join)得到大任务的最终结果。下面是示意图(ps:盗网上网上盗的图,禁止套娃!)ForkJoinPool通常配合ForkJoinTask一起使用,ForkJoinTask代表一个任务,它是个抽象类,它的常见子类有RecursiveTask和RecursiveAction,其中Re
·
2021-02-18 23:30
java
Java并发—线程同步类
原文作者:洲洋1984原文地址:Java并发包中的高级同步工具Java中的并发包指的是java.util.concurrent(简称
JUC
)包和其子包下的类和接口,它为Java的并发提供了各种功能支持,
测试狗一枚
·
2021-02-18 18:52
Java编程
04-
JUC
--atomic
Atomic什么是原子类?有什么用?6类原子类纵览AtomicInteger常用方法代码演示1AtomicArray代码演示AtomicReference引用类型原子类代码演示把普通变量升级为具有原子功能代码演示AtomicIntegerFieldUpdater的注意点Adder累加器代码演示源码解析Accumulator累加器代码演示什么是原子类?有什么用?不可分割一个操作是不可分割的,即使在多
炸酱面卖完了
·
2021-02-18 14:43
java并发
多线程
并发编程
通俗易懂的
JUC
源码剖析-ScheduledThreadPoolExecutor
前言ScheduledThreadPoolExecutor是一种带有延迟,定时执行任务的线程池。它在很多延时任务、定时任务的场景中有丰富的应用场景。今天就来分析下它的实现原理吧。实现原理先看看类图结构:publicclassScheduledThreadPoolExecutorextendsThreadPoolExecutorimplementsScheduledExecutorService{}
·
2021-02-17 17:40
java
通俗易懂的
JUC
源码剖析-ScheduledThreadPoolExecutor
前言ScheduledThreadPoolExecutor是一种带有延迟,定时执行任务的线程池。它在很多延时任务、定时任务的场景中有丰富的应用场景。今天就来分析下它的实现原理吧。实现原理先看看类图结构:publicclassScheduledThreadPoolExecutorextendsThreadPoolExecutorimplementsScheduledExecutorService{}
·
2021-02-17 17:03
java
通俗易懂的
JUC
源码剖析-Semaphore
前言Semaphore意为信号量,它用来限制某段时间内的最大并发资源数。例如数据库连接池,停车位等。下面通过停车位的栗子来说明Semaphore的使用方式。importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{privatestaticSemaphoresemaphore=newSemaphore(10);publicstati
·
2021-02-17 12:59
java
通俗易懂的
JUC
源码剖析-Semaphore
前言Semaphore意为信号量,它用来限制某段时间内的最大并发资源数。例如数据库连接池,停车位等。下面通过停车位的栗子来说明Semaphore的使用方式。importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{privatestaticSemaphoresemaphore=newSemaphore(10);publicstati
·
2021-02-17 12:51
java
通俗易懂的
JUC
源码剖析-CyclicBarrier
前言我们知道,CountDownLatch的计数器是一次性的,它不能重置。也就是说,当count值变为0时,再调用await()方法会立即返回,不会阻塞。本文要说的CyclicBarrier就是一种可以重置计数器的线程同步工具类。CyclicBarrier字面意思是“回环屏障”,它可以让一组线程全部到达一个状态后再全部同时往下执行。之所以叫回环是因为当所有线程执行完毕,并重置CyclicBarri
·
2021-02-16 15:44
java
通俗易懂的
JUC
源码剖析-CountDownLatch
前言在实际开发中,有时会遇到这样的场景:主任务需要等待若干子任务完成后,再进行后续的操作。这时可以用join或者本文的CountDownLatch实现。它们的区别在于CountDownLatch更加灵活。比如,子任务的工作分为两个阶段,主任务只需子任务完成第一个阶段即可开始主任务,无需等第二个阶段完成。这种场景join就无法做到,CountDownLatch就可以实现。下面是实例代码。import
·
2021-02-16 15:44
java
通俗易懂的
JUC
源码剖析-CyclicBarrier
前言我们知道,CountDownLatch的计数器是一次性的,它不能重置。也就是说,当count值变为0时,再调用await()方法会立即返回,不会阻塞。本文要说的CyclicBarrier就是一种可以重置计数器的线程同步工具类。CyclicBarrier字面意思是“回环屏障”,它可以让一组线程全部到达一个状态后再全部同时往下执行。之所以叫回环是因为当所有线程执行完毕,并重置CyclicBarri
·
2021-02-16 15:09
java
通俗易懂的
JUC
源码剖析-CountDownLatch
前言在实际开发中,有时会遇到这样的场景:主任务需要等待若干子任务完成后,再进行后续的操作。这时可以用join或者本文的CountDownLatch实现。它们的区别在于CountDownLatch更加灵活。比如,子任务的工作分为两个阶段,主任务只需子任务完成第一个阶段即可开始主任务,无需等第二个阶段完成。这种场景join就无法做到,CountDownLatch就可以实现。下面是实例代码。import
·
2021-02-16 15:37
java
Spring AOP源码(5)—DefaultAdvisorAutoProxyCreator自动代理创建者
文章目录SpringAOP
源码系列
文章DefaultAdvisorAutoProxyCreator原理SpringAOP
源码系列
文章SpringAOP源码(1)—<aop:config/>AOP配置标签解析
L-Java
·
2021-02-16 10:24
#
Spring
5.x
源码
Spring
AOP源码
DefaultAdvisor
ProxyCreator
Java全栈学习路线
后端JavaSE基础(最难)计算机基础知识Java入门基础知识基本数据类型数组面向对象编程异常常用类集合框架IO流多线程网络编程注解反射
JUC
Java8新特性数据结构与算法JVM23种设计模式数据库Mysql
SZH勿忘初心
·
2021-02-15 21:03
java
vue.js
linux
【并发编程】LockSupport类
3种让线程等待唤醒的方法:使用Object中的wait()方法让线程等待,使用Object中的notify方法唤醒线程使用
JUC
包中Condition的aw
小伟り
·
2021-02-13 15:59
并发编程
java
java aqs_JAVA基础学习之-AQS的实现原理分析
AbstractQueuedSynchronizer是
JUC
的核心框架,其设计非常精妙。使用了Java的模板方法模式。
PS自学部落
·
2021-02-12 10:31
java
aqs
【锁】如何实现死锁
目录1、创建死锁2、创建线程任务类3、测试结果4、总结1、创建死锁packagelao.ben.
juc
.deadLock;importorg.junit.Test;//死锁条件:两个线程互相持有对方想要的锁
小老犇
·
2021-02-11 23:23
Java基础
多线程
并发编程
java
死锁
锁
synchronized详解
在Java中,synchronized锁可能是我们最早接触的锁了,在JDK1.5之前synchronized是一个重量级锁,相对于
juc
包中的Lock,synchronized显得比较笨重。
·
2021-02-10 18:49
java并发
synchronized详解
在Java中,synchronized锁可能是我们最早接触的锁了,在JDK1.5之前synchronized是一个重量级锁,相对于
juc
包中的Lock,synchronized显得比较笨重。
·
2021-02-10 18:34
java并发
JUC
-java.util.concurrent.locks
InterfaceLockLocklock=newReentrantLock();无论需要同步的代码是不是在一个方法中,只要使用同一个锁对象就能实现同步(和synchronized原理一样)//使用方法try{lock.lock();同步代码...}finally{lock.unlock();}注意,多次重入需要多次释放:thread.interrupt()thread.interrupt();方
咕噜咕噜崩
·
2021-02-09 12:45
java进阶
多线程
java
并发编程
通俗易懂的
JUC
源码剖析-ReentrantLock&AQS
AQS概述大家可能对AQS听得很多,它的全称是AbstractQueuedSynchronizer,即抽象队列同步器,它是
JUC
包中很多同步组件的基础。先来看看它的类层次以及内部数据结构吧。
·
2021-02-09 01:54
java
通俗易懂的
JUC
源码剖析-StampedLock
StampedLock的作用StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。StampedLock有三种模式mode和一个版本号stamp。三种模式:悲观写模式:writeLock
·
2021-02-09 01:54
java
通俗易懂的
JUC
源码剖析-ThreadPoolExecutor
前言ThreadPoolExecutor相信大家都很熟悉:线程池的实现类。今天我们就来看看它内部是怎么实现的。实现原理先来看看它的类结构:publicclassThreadPoolExecutorextendsAbstractExecutorService{}publicabstractclassAbstractExecutorServiceimplementsExecutorService{}p
·
2021-02-09 01:22
java
通俗易懂的
JUC
源码剖析-ThreadPoolExecutor
前言ThreadPoolExecutor相信大家都很熟悉:线程池的实现类。今天我们就来看看它内部是怎么实现的。实现原理先来看看它的类结构:publicclassThreadPoolExecutorextendsAbstractExecutorService{}publicabstractclassAbstractExecutorServiceimplementsExecutorService{}p
·
2021-02-09 01:45
java
通俗易懂的
JUC
源码剖析-StampedLock
StampedLock的作用StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。StampedLock有三种模式mode和一个版本号stamp。三种模式:悲观写模式:writeLock
·
2021-02-09 01:45
java
通俗易懂的
JUC
源码剖析-ReentrantLock&AQS
AQS概述大家可能对AQS听得很多,它的全称是AbstractQueuedSynchronizer,即抽象队列同步器,它是
JUC
包中很多同步组件的基础。先来看看它的类层次以及内部数据结构吧。
·
2021-02-09 01:45
java
JUC
-ThreadLocal
概念(就是将一个变量与线程绑定)只记1:ThreadLocal都是由privatestatic修饰的ThreadLocal与synchronized区别ThreadLocal相对可以拥有更高的并发性synchronized只提供一个变量(一个工具=>一支笔只提供一支笔就会产生哄抢,所以要使用synchronized进行排序)(想起多线程使用同一个SimpleDateFormat就会报错)。而Thr
咕噜咕噜崩
·
2021-02-08 20:04
java进阶
java
多线程
通俗易懂的
JUC
源码剖析-DelayQueue
前言DelayQueue是BlockingQueue接口的实现类,它是带有延时功能的无界阻塞队列,意思就是每个元素都有过期时间,当从队列获取元素时,只有过期元素才会出队列。队列的头部元素是最快要过期的元素。实现原理先来看看它的类结构:publicclassDelayQueueextendsAbstractQueueimplementsBlockingQueue{}可以看到,存放的元素必须实现了De
·
2021-02-08 00:18
java
通俗易懂的
JUC
源码剖析-DelayQueue
前言DelayQueue是BlockingQueue接口的实现类,它是带有延时功能的无界阻塞队列,意思就是每个元素都有过期时间,当从队列获取元素时,只有过期元素才会出队列。队列的头部元素是最快要过期的元素。实现原理先来看看它的类结构:publicclassDelayQueueextendsAbstractQueueimplementsBlockingQueue{}可以看到,存放的元素必须实现了De
·
2021-02-08 00:01
java
通俗易懂的
JUC
源码剖析-PriorityBlockingQueue
前言PriorityBlockingQueue是BlockingQueue接口的实现类,它是一种优先级阻塞队列,每次出队都返回优先级最高或最低的元素,其内部是用平衡二叉树堆实现的。这里的优先级指的是元素类必须实现Comparable接口,然后用compareTo()方法比较元素的优先级大小,当然也可指定自定义的比较器comparator。实现原理先来看看它的重要属性://队列默认容量为11priv
·
2021-02-06 23:09
java
通俗易懂的
JUC
源码剖析-PriorityBlockingQueue
前言PriorityBlockingQueue是BlockingQueue接口的实现类,它是一种优先级阻塞队列,每次出队都返回优先级最高或最低的元素,其内部是用平衡二叉树堆实现的。这里的优先级指的是元素类必须实现Comparable接口,然后用compareTo()方法比较元素的优先级大小,当然也可指定自定义的比较器comparator。实现原理先来看看它的重要属性://队列默认容量为11priv
·
2021-02-06 23:55
java
JUC
并发编程(十四)-- 死锁
JUC
并发编程(十四)--死锁一、死锁的实现二、处理死锁1、使用jps-l定位死锁的进程2、使用jstack查看问题一、死锁的实现我们这里直接跳过什么是死锁的概念,直接用代码实现死锁:packagecom.zhan.
juc
.lock
书生灬今天不吃饭
·
2021-02-06 15:09
多线程
java
多线程
java
并发编程
juc
JUC
并发编程(十三)-- 自旋锁
JUC
并发编程(十三)--自旋锁一、什么是自旋锁二、自旋锁的实现一、什么是自旋锁自旋锁:即当一个目标线程上锁后,其他线程就会循环等待,直到目标线程释放锁为止。
书生灬今天不吃饭
·
2021-02-06 14:41
多线程
java
多线程
并发编程
java
thread
juc
JUC
并发编程(十二)--可重入锁
JUC
并发编程(十二)--可重入锁一、什么是可重入锁二、不可重入锁三、可重入锁实现一、什么是可重入锁同一个线程可以多次上锁代码段。二、不可重入锁指的就是同一个线程不能多次上锁代码段。
书生灬今天不吃饭
·
2021-02-06 14:01
多线程
java
多线程
java
并发编程
thread
juc
通俗易懂的
JUC
源码剖析-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:02
java
通俗易懂的
JUC
源码剖析-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:56
java
JUC
-内存模型
类锁在实例方法中使用:synchronized(this.getClass()){}要注意脏读:对共享数据的改和读都要进行同步,不然可能出现读取到改动中间值的错误情况。线程出现异常会自动释放锁!!!死锁解决办法:让两个线程方法中的嵌套锁的锁对象顺序一样/***死锁的实质:*/一个线程:sychronized(a){sychronized(b){}}另一个线程:sychronized(b){sych
咕噜咕噜崩
·
2021-02-05 21:46
java进阶
多线程
java
并发编程
上一页
49
50
51
52
53
54
55
56
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他