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
JAVA并发系列
[
Java并发系列
] 2.Java中的原子操作类
1.原子操作类的作用当程序更新一个变量时,如果多个线程同时更新该变量,可能会得到期望以外的值。比如i=1,线程A更新i+1,同时线程B更新I+1,经过两个线程的操作,最终变量i的值可能不是3,而是2。因为线程A、B拿到的i的值都是1,这就是线程不安全的更新操作。我们可以用synchronized来解决这样的问题,synchronized可以保证多线程之间的同步,以保证多个线程不会同时操作变量i。但
Xiangdong_She
·
2019-11-01 08:41
【
Java并发系列
】--Java内存模型
Java内存模型1基本概念程序:代码,完成某一个任务的代码序列(静态概念)进程:程序在某些数据上的一次运行(动态)线程:一个进程有一个或多个线程组成(占有资源的独立单元)2JVM与线程jvm启动时期类被调用:JVM线程启动——>启动其他线程(main)3jvm内存区域(运行时数据区)Java虚拟机会在程序运行时将内存自动划分为以上几个区域,每个区域都有其作用及创建和销毁时机。方法区:(共享区域)存
gyhdx
·
2019-09-14 18:20
Java并发
【
Java并发系列
】--Java内存模型
Java内存模型1基本概念程序:代码,完成某一个任务的代码序列(静态概念)进程:程序在某些数据上的一次运行(动态)线程:一个进程有一个或多个线程组成(占有资源的独立单元)2JVM与线程jvm启动时期类被调用:JVM线程启动——>启动其他线程(main)3jvm内存区域(运行时数据区)Java虚拟机会在程序运行时将内存自动划分为以上几个区域,每个区域都有其作用及创建和销毁时机。方法区:(共享区域)存
紫月冰凌
·
2019-09-14 18:00
Java并发系列
(12)详解Condition的await和signal等待通知机制
原文作者:github:CL0610/Java-concurrency免责声明:1.本文所转载文章均来自公开网络。2.如果出处标注有误或侵犯到原著作者权益,请联系删除。3.转载文章请注明原文链接和作者,否则产生的任何版权纠纷均与本站无关。1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(lon
jamen
·
2019-09-10 00:00
java
docker
多线程
并发编程
Java并发系列
(12)详解Condition的await和signal等待通知机制
原文链接:https://www.guan2ye.com/2019/08/31/%E8%AF%A6%E8%A7%A3Condition%E7%9A%84await%E5%92%8Csignal%E7%AD%89%E5%BE%85%E9%80%9A%E7%9F%A5%E6%9C%BA%E5%88%B6.html本站小福利点我获取阿里云优惠券原文作者:github:CL0610/Java-concur
不想当码农的程序员
·
2019-09-09 21:59
java
多线程
并发
Java并发系列
(8)初识Lock与AbstractQueuedSynchronizer(AQS)
原文链接:https://www.guan2ye.com/2019/08/31/%E5%88%9D%E8%AF%86Lock%E4%B8%8EAbstractQueuedSynchronizer(AQS).html本站小福利点我获取阿里云优惠券原文作者:github:CL0610/Java-concurrency免责声明:1.本文所转载文章均来自公开网络。2.如果出处标注有误或侵犯到原著作者权益,
不想当码农的程序员
·
2019-09-09 00:31
java
多线程
并发
Java并发系列
(6)java关键字-final
本站小福利点我获取阿里云优惠券原文作者:github:CL0610/Java-concurrency免责声明:1.本文所转载文章均来自公开网络。2.如果出处标注有误或侵犯到原著作者权益,请联系删除。3.转载文章请注明原文链接和作者,否则产生的任何版权纠纷均与本站无关。1.final的简介final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个fi
jamen
·
2019-09-08 00:00
多线程
并发编程
java
java并发系列
- 第30天:JUC中工具类CompletableFuture,必备技能
这是java高并发系列第30篇。环境:jdk1.8。CompletableFuture是java8中新增的一个类,算是对Future的一种增强,用起来很方便,也是会经常用到的一个工具类,熟悉一下。CompletionStage接口CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一个阶段的计算执行可以是一个Function,Consumer或者Ru
路人甲Java
·
2019-08-23 18:22
Java同步机制之synchronized
Java并发系列
番外篇——同步机制(一)隐式锁,又称线程同步synchronized。
维特or卡顿
·
2019-08-21 15:57
java并发系列
- 第29天:高并发中常见的限流方式
这是java高并发系列第29篇。环境:jdk1.8。本文内容介绍常见的限流算法通过控制最大并发数来进行限流通过漏桶算法来进行限流通过令牌桶算法来进行限流限流工具类RateLimiter常见的限流的场景秒杀活动,数量有限,访问量巨大,为了防止系统宕机,需要做限流处理国庆期间,一般的旅游景点人口太多,采用排队方式做限流处理医院看病通过发放排队号的方式来做限流处理。常见的限流算法通过控制最大并发数来进行
路人甲Java
·
2019-08-20 16:00
java并发系列
- 第29天:高并发中常见的限流方式
这是java高并发系列第29篇。环境:jdk1.8。本文内容介绍常见的限流算法通过控制最大并发数来进行限流通过漏桶算法来进行限流通过令牌桶算法来进行限流限流工具类RateLimiter常见的限流的场景秒杀活动,数量有限,访问量巨大,为了防止系统宕机,需要做限流处理国庆期间,一般的旅游景点人口太多,采用排队方式做限流处理医院看病通过发放排队号的方式来做限流处理。常见的限流算法通过控制最大并发数来进行
路人甲Java
·
2019-08-20 15:34
java并发系列
- 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉
这是java高并发系列第28篇文章。环境:jdk1.8。本文内容日志有什么用?日志存在的痛点?构建日志系统日志有什么用?系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务提取有用数据,做数据分析使用本文主要讨论通过日志来快速定位并解决问题。日志存在的痛点先介绍一下多数公司采用的方式:目前比较流行的是采用springcloud(或者dubbo)做微服务,按照业拆分为多个独立的服务
路人甲Java
·
2019-08-19 16:00
java并发系列
- 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉
这是java高并发系列第28篇文章。环境:jdk1.8。本文内容日志有什么用?日志存在的痛点?构建日志系统日志有什么用?系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务提取有用数据,做数据分析使用本文主要讨论通过日志来快速定位并解决问题。日志存在的痛点先介绍一下多数公司采用的方式:目前比较流行的是采用springcloud(或者dubbo)做微服务,按照业拆分为多个独立的服务
路人甲Java
·
2019-08-19 15:40
Java并发系列
之八Semaphore
前面我已经讲解过了CountDownLatch和CyclicBarrier。本篇我们来讲解下Semaphore。Semaphore是指信号量,在计算机的世界里信号量可以使用在数据竞争的场景中。在生活中交通信号灯可以比作现实世界中的Semaphore。Semaphore的作用就是允许或者禁止。比如说红灯禁止通行,绿灯允许通行。计算机世界里的Semaphore会持有多张许可证,举个例子有10张许可证,
future234
·
2019-07-16 12:53
Java多线程架构
java并发
多线程高并发内容聚合
Java并发系列
(1)AbstractQueuedSynchronizer源码分析之概要分析
Java并发系列
(2)AbstractQueuedSynchronizer源码分析之独占模式
Java并发系列
(
Java知音*
·
2019-07-09 10:00
Java并发系列
之7 深入理解线程池ThreadPoolExecutor
1.初识线程池线程池解决了如下两个问题当执行大量的异步任务时,线程池可以减少每个任务的调用切换开销从而提高应用性能对执行的线程,和要被执行的任务,提供了管理的方法此外每个线程池还维护了一些基本统计信息,比如已完成任务的数量2.ThreadPoolExecutor的简单使用我们创建一个线程池对象ThreadPoolExecutor,让线程池执行10个打印任务,输出当前任务名称以及线程的名称publi
future234
·
2019-07-07 18:23
Java多线程架构
java并发
Java并发系列
— ThreadLocal
ThreadLocal介绍ThreadLocal提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。那么ThreadLocal到底是什么呢?API是这样介绍的:Thisclassprovidesthread-localvariables.Thesevariablesdifferfromtheirnormalcounterpartsinthateachthreadthat
dulihanjiang666
·
2019-01-14 14:30
Java并发系列
—工具类:Semaphore
Semaphore(信号量)用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽车车票,只有成功获取车票的人才能够上车,并且车票是有一定数量的,不可能毫无限制的发下去,这样就会导致公交车超载。所以当车票发完的时候(公交车以满载),其他人就只能等下一趟车了。如果中途有人下车,那么他的位置将会空闲出来,因
dulihanjiang666
·
2019-01-14 14:56
Java并发系列
| AbstractQueuedSynchronizer源码分析之独占模式
在上一篇《
Java并发系列
[1]----AbstractQueuedSynchronizer源码分析之概要分析》中我们介绍了AbstractQueuedSynchronizer基本的一些概念,主要讲了AQS
K'illCode
·
2018-12-18 09:59
java
Java并发系列
| CyclicBarrier源码分析
现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。在JUC包中为我们提供了一个同步工具类能够很好的模拟这类场景,它就是CyclicBarrier类。利用CyclicBarrier类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。下图演示了这一过
K'illCode
·
2018-12-15 09:00
java
Java并发系列
| ConcurrentHashMap源码分析
我们知道哈希表是一种非常高效的数据结构,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构,那就是HashMap类,在前面的文章中我曾经介绍过HashMap类,知道它的所有方法都未进行同步,因此在多线程环境中是不安全的。为此,Java为我们提供了另外一个HashTable类,它对于多线程同步的处理非常简单粗暴,那就是在HashMap的基础上对其所有方
K'illCode
·
2018-12-15 09:33
java
java并发系列
五(并发集合,原子类)
1,并发集合一,concurrentHashMap!!!(超重点)这里对concurrentHashMap的讲解分为jdk7和jdk8。两个版本有了很大的变化java7中着重讲解分段锁,java8中concurrentHashMap是基于数组加链表加红黑树实现的1,java7中concurrentHashMap的实现锁的粒度的减少有2钟方式,锁分解和锁分段。java7中concurrentHash
净心斋主
·
2018-12-07 12:41
java并发系列
java并发系列
一(java内存模型)
作为一个半路出家学java的菜菜菜鸟,真的是感觉路漫漫其修远兮,工作间隙看了大约两周的java并发,现在开始慢慢总结。1.线程间的通信线程之间的协作主要有几个点,wait,notify,notiyALl(),显示Condition对象,队列中的生产者消费者等等。主要就是条件队列的使用。我将结合java编程思想和java并发编程这两本书中的内容进行整理。1,条件队列首先引入一个概念:条件谓词(我了个
净心斋主
·
2018-11-22 23:28
java并发系列
博客内容索引
Python语言Python全局变量并发编程这个
Java并发系列
的翻译中确实学了很多知识,尤其是一些概念性的东西。建议英文好的小
JenningLang
·
2018-08-12 03:14
Java并发系列
— 阻塞队列(BlockingQueue)
本文系《Java并发编程艺术》的读书笔记什么是阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:当队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程
codersm
·
2018-07-19 15:04
Java 并发系列:CAS机制
Java并发系列
:CAS机制在并发程序中,经常有“checkandact”的场景:检查某个变量的值,然后再做相应的操作。
覃冠日
·
2018-07-16 12:13
Java
Java并发系列
三:Java内存模型以及happens-before规则
JMM的介绍在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了。在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题?我的认识是,在多线程下代码执行的结果与预期正确的结果不一致,该代码就是线程不安全的,否则则是线程安全的。虽然这种回答似乎不能获取什么内容,可以google下。在>中看到的定义。原
TzBugs
·
2018-07-05 17:04
java并发编程
java并发系列
:阻塞队列(1) ArrayBlockingQueue
一阻塞队列看了《Java并发编程的艺术》。通常只有ReentrantLock+Condition+数组。而关于迭代器的介绍很少,所在本篇补上。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队
bohu83
·
2018-06-23 23:44
并发系列整理
java并发系列
:ReentrantReadWriteLock读写锁
一序之前整理过AQS(AbstractQueuedSynchronizer)锁的基础。还有重入锁(ReentrantLock),Java常见的多是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。读写锁能有
bohu83
·
2018-06-22 16:40
并发系列整理
Java并发系列
之二 一道好玩有趣的多线程面试题
1.一道好玩有趣的面试题Java求职中往往会碰到这样的面试题。请实现多线程交替打印0和1的程序。看到这道题目,凭着程序员的第六感,我们很容易联想到消费者和生产者模式。他们之间有很大的相似之处啊。生产者线程负责往仓库生产物资,当仓库的物资物满为患的时候,阻塞线程停止生产,等待消费者线程消费物资后唤醒生产者线程。消费者线程负责从仓库拿出物资,当仓库没有物资的时候阻塞线程停止消费,等待生产者线程生产物资
future234
·
2018-06-05 09:08
Java多线程架构
Android开发
java并发
Java并发系列
之volatile
讲到Java并发,多线程编程,一定避免不了对关键字volatile的了解,那么如何来认识volatile,从哪些方面来了解它会比较合适呢?个人认为,既然是多线程编程,那我们在平常的学习中,工作中,大部分都接触到的就是线程安全的概念。而线程安全就会涉及到共享变量的概念,所以首先,我们得弄清楚共享变量是什么,且处理器和内存间的数据交互机制是如何导致共享变量变得不安全。共享变量能够在多个线程间被多个线程
苟诞
·
2018-06-01 17:49
Java并发系列
之Synchronized
每一个刚接触多线程并发编程的同学,当被问到,如果多个线程同时访问一段代码,发生并发的时候,应该怎么处理?我相信闪现在脑海中的第一个解决方案就是用synchronized,用锁,让这段代码同一时间只能被一个线程执行。我们也知道,synchronized关键字可以用在方法上,也可以用在代码块上,如果要使用synchronized,我们一般就会如下使用:publicsynchronizedvoiddoS
linmiansheng
·
2018-05-31 00:30
Java并发
java并发系列
:深入分析Synchronized
1术语:CAS:CompareandSwap,比较并设置。用于在硬件层面上提供原子性操作。在Intel处理器中,比较并交换通过指令cmpxchg实现。比较是否和给定的数值一致,如果一致则修改,不一致则不修改。2同步的基础:Java中的每一个对象都可以作为锁。对于同步方法,锁是当前实例对象。对于静态同步方法,锁是当前对象的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。详
kennethan
·
2018-04-08 23:54
Java并发系列
之CountDownLatch源码分析
CountDownLatch(闭锁)是一个很有用的工具类,利用它我们可以拦截一个或多个线程使其在某个条件成熟后再执行。它的内部提供了一个计数器,在构造闭锁时必须指定计数器的初始值,且计数器的初始值必须大于0。另外它还提供了一个countDown方法来操作计数器的值,每调用一次countDown方法计数器都会减1,直到计数器的值减为0时就代表条件已成熟,所有因调用await方法而阻塞的线程都会被唤醒
劳夫子
·
2018-03-26 11:02
Java并发系列
之CyclicBarrier源码分析
现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。在JUC包中为我们提供了一个同步工具类能够很好的模拟这类场景,它就是CyclicBarrier类。利用CyclicBarrier类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。下图演示了这一过
劳夫子
·
2018-03-26 11:34
Java并发系列
之ConcurrentHashMap源码分析
我们知道哈希表是一种非常高效的数据结构,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构,那就是HashMap类,在前面的文章中我曾经介绍过HashMap类,知道它的所有方法都未进行同步,因此在多线程环境中是不安全的。为此,Java为我们提供了另外一个HashTable类,它对于多线程同步的处理非常简单粗暴,那就是在HashMap的基础上对其所有方
劳夫子
·
2018-03-26 11:54
Java并发系列
之AbstractQueuedSynchronizer源码分析(共享模式)
通过上一篇的分析,我们知道了独占模式获取锁有三种方式,分别是不响应线程中断获取,响应线程中断获取,设置超时时间获取。在共享模式下获取锁的方式也是这三种,而且基本上都是大同小异,我们搞清楚了一种就能很快的理解其他的方式。虽然说AbstractQueuedSynchronizer源码有一千多行,但是重复的也比较多,所以读者不要刚开始的时候被吓到,只要耐着性子去看慢慢的自然能够渐渐领悟。就我个人经验来说
劳夫子
·
2018-02-27 11:54
Java并发系列
之AbstractQueuedSynchronizer源码分析(独占模式)
在上一篇《
Java并发系列
[1]----AbstractQueuedSynchronizer源码分析之概要分析》中我们介绍了AbstractQueuedSynchronizer基本的一些概念,主要讲了AQS
劳夫子
·
2018-02-27 10:29
Java并发系列
之AbstractQueuedSynchronizer源码分析(概要分析)
所以在
Java并发系列
文章中我首先对Abstrac
劳夫子
·
2018-02-27 10:14
Java并发系列
之ReentrantLock源码分析
在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile。我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可见性。在大多数情况下,这些机制都能很好地完成工作,但却无法实现一些更高级的功能,例如,无法中断一个正在等待获取锁的线程,无法实现限定时间的获取锁机制,无法实现非阻塞结构的加锁规则等。而这些更灵活的加锁
劳夫子
·
2018-02-27 10:10
Java并发系列
之AbstractQueuedSynchronizer源码分析(条件队列)
通过前面三篇的分析,我们深入了解了AbstractQueuedSynchronizer的内部结构和一些设计理念,知道了AbstractQueuedSynchronizer内部维护了一个同步状态和两个排队区,这两个排队区分别是同步队列和条件队列。我们还是拿公共厕所做比喻,同步队列是主要的排队区,如果公共厕所没开放,所有想要进入厕所的人都得在这里排队。而条件队列主要是为条件等待设置的,我们想象一下如果
劳夫子
·
2018-02-27 09:43
Java并发系列
之Semaphore源码分析
Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制。Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽车车票,只有成功获取车票的人才能够上车,并且车票是有一定数量的,不可能毫无限制的发下去,这样就会导致公交车超载。所以当车票发完的时候(公交车以满载
劳夫子
·
2018-02-27 09:20
[
Java并发系列
] 1.Java并发机制的底层实现
在Java并发实现的机制中,大部分的容器和框架都是依赖于volatile/synchronized/原子操作实现的,了解底层的并发机制,对于并发编程会带来很多帮助1.synchronized的应用synchronized在多线程并发编程中已经是一个元老级的存在,通常被称作是重量级锁。既然是常用的一种锁,那么就需要对它的底层实现有深入的了解。1.synchronized的实现原理当一个线程在访问同步
Xiangdong_She
·
2017-12-11 07:47
Java并发系列
6-Fork/Join框架
一、介绍1、Fork/Join框架是Java7提供了的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork:把一个大任务切分为若干子任务并行的执行。Join:合并这些子任务的执行结果,最后得到这个大任务的结果。上图中,上部的Task依赖于下部的Task执行,只有当各个子任务执行完成后,才能得到Task0的返回结果。2、原理分割任务。需
唐影若凡
·
2017-11-12 21:04
并发
java
java并发编程
Java并发系列
7-Disruptor无锁缓存框架
1、从生产者消费者说起在传统的生产者消费者模型中,通常是采用BlockingQueue实现。其中生产者线程负责提交需求,消费者线程负责处理任务,二者之间通过共享内存缓冲区进行通信。由于内存缓冲区的存在,允许生产者和消费者之间速度的差异,确保系统正常运行。下图展示一个简单的生产者消费者模型,生产者从文件中读取数据,将数据内容写入到阻塞队列中,消费者从队列的另一边获取数据,进行计算并将结果输出。其中M
唐影若凡
·
2017-06-30 22:10
java并发编程
Java并发性和多线程介绍目录
Java并发系列
-1、Java并发性和多线程介绍
Java并发系列
-2、多线程的优点
Java并发系列
-3、多线程的代价
Java并发系列
-4、并发编程模型
Java并发系列
-5、如何创建并运行java线程
Java
路人甲Java
·
2016-12-06 14:41
java
Java并发性和多线程介绍目录
Java并发系列
-1、Java并发性和多线程介绍
Java并发系列
-2、多线程的优点
Java并发系列
-3、多线程的代价
Java并发系列
-4、并发编程模型
Java并发系列
-5、如何创建并运行java线程
Java
likun557
·
2016-12-06 14:00
java
多线程
并发
线程
Java并发系列
-21、重入锁死
重入锁死与死锁和嵌套管程锁死非常相似。锁和读写锁两篇文章中都有涉及到重入锁死的问题。当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死。可重入的意思是线程可以重复获得它已经持有的锁。Java的synchronized块是可重入的。因此下面的代码是没问题的:(译者注:这里提到的锁都是指的不可重入的锁实现,并不是Java类库中的Lock与ReadWriteLock类)public
likun557
·
2016-12-05 17:00
java
多线程
并发
线程
Java并发系列
-17、Slipped Conditions
所谓Slippedconditions,就是说,从一个线程检查某一特定条件到该线程操作此条件期间,这个条件已经被其它线程改变,导致第一个线程在该条件上执行了错误的操作。这里有一个简单的例子:publicclassLock{ privatebooleanisLocked=true; publicvoidlock(){ synchronized(this){ while(isLocked){ try
likun557
·
2016-12-05 15:00
java
多线程
并发
线程
死锁
Java并发系列
-16、嵌套锁死
嵌套管程锁死类似于死锁,下面是一个嵌套管程锁死的场景:线程1获得A对象的锁。 线程1获得对象B的锁(同时持有对象A的锁)。 线程1决定等待另一个线程的信号再继续。 线程1调用B.wait(),从而释放了B对象上的锁,但仍然持有对象A的锁。 线程2需要同时持有对象A和对象B的锁,才能向线程1发信号。 线程2无法获得对象A上的锁,因为对象A上的锁当前正被线程1持有。 线程2一直被阻塞,等待线程1释
likun557
·
2016-12-05 14:00
java
多线程
并发
线程
死锁
上一页
1
2
3
4
下一页
按字母分类:
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
其他