问题背景 在感觉正常的使用ArrayList的迭代删除的操作的时候,发现了如下的崩溃日志: Caused by: java.util.ConcurrentModificationException at java.uti…
分类:java并发
《Java并发编程实战》第十三章 显示锁 读书笔记
一、Lock与 ReentrantLock Lock 提供一种无条件的、可轮询的、定时的、可中断的锁获取操作,全部加锁和解锁的方法都是显式的。 public interface Lock { void lock(); /…
深入理解Java内置锁和显式锁
synchronized and Reentrantlock 多线程编程中,当代码需要同步时我们会用到锁。Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两种同步方式。显式锁是…
java中应该尽量使用notifyall而不是notify(容易发生死锁)
比较悲剧的是我在面试的时候,搞混了,跟面试官讲反了,结果估计是留下了不好的印象…… JVM多个线程间的通信是通过 线程的锁、条件语句、以及wait()、notify()/notify…
Java多线程系列——计数器 CountDownLatch,Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
简介: CountDownLatch 是一个非常实用的多线程控制工具类,通常用来控制线程的等待,它可以让某个线程等待直到倒计时结束 CountDownLatch 提供了两个主要的方法,await()、countDown(…
java多线程系类:JUC原子类:01之框架
本系列内容全部来自于http://www.cnblogs.com/skywang12345/p/3514589.html 特在此说明!!!!! 根据修改的数据类型,可以将JUC包中的原子操作类…
7.JUC组件拓展-Callable、Future和FutureTask
Callable、Future和FutureTask 创建线程有2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行…
Java多线程 -- JUC包源码分析14 -- ScheduledThreadPoolExecutor与DelayQueue源码分析
在前面的篇章中,我们分析了ThreadPoolExecutor,知道了execute和submit的内部实现原理,知道了Runnable/Callable的内在关系。 周期/非周期 AtFixedRate/WithFix…
一名3年工作经验的java程序员应该具备的职业技能
一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。 1、基本语法 这…
Java并发编程札记-(六)JUC线程池-02ThreadPoolExecutor实现原理
本文通过学习ThreadPoolExecutor源码来学习线程池的实现原理。 简介 为什么要使用线程池 许多服务器都面临着处理大量客户端远程请求的压力,如果每收到一个请求,就创建一个线程来处理,表面看是没有问题的,但实际…
Java多线程中的可重入锁
可重入锁 可重入锁ReentrantLock,就是支持可重入的锁,他表示该锁能够支持一个线程对资源的重复加锁。 分类 公平锁 该锁满足在队列中进行自旋等待的线程等待时间最长的一定先获取锁,获取过程一定是顺序的。 非公平锁…
java并发编程5:实现锁无关数据结构
简介: 本文将介绍锁无关数据结构的应用及其相关概念,并在 Java 环境下利用 JDK 1.5 提供的一组类进行锁无关数据结构设计,从而避免基于锁的数据结构可能引发的同步问题,以改善程序的可靠性。 介绍 通常…