当同时对一个文件进行操作的时候,很可能出现错误甚至锁坏文件。 在某些情况下,有一个应用的两个实例同事操作一个文件,第一个实例应该锁定这个文件,第二个实例发现这个文件被锁定,是等待它解锁还是跳过文件操作呢。 锁定一个文件,…
分类:java并发
Java高级特性系列--Concurrent
转载自 http://www.cnblogs.com/skywang12345/p/java_threads_category.html JUC:java.util.concurrent 一,JUC原子类 根据修改的数据…
Java高级编程-JUC
1.Volatile关键字 package cn.zzu.wcj.juc; /** * * @author WangChengJian * volatile关键字:当多个线程进行操作共享数据时,可以保证内存中的数据的可见…
juc - CyclicBarrier源码解读
之前看了CountDownLatch,他的实现是使用了aqs,提前设置好state的值,如果state不是0的时候调用await就会阻塞当前线程,加入到aqs的队列中,调用countDown就会减小state的值,当st…
【转】详解ThreadPoolExecutor
java.util.concurrent.ThreadPoolExecutor,其构造方法1: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSiz…
【翻译十八】java-并发之锁对象
Lock Objects Synchronized code relies on a simple kind of reentrant lock. This kind of lock is easy to use, bu…
[转]java的类锁和对象锁
对象锁:java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方…
Java并发之彻底搞懂偏向锁升级为轻量级锁
网上有许多讲偏向锁,轻量级锁的文章,但对偏向锁如何升级讲的不够明白,有些文章还相互矛盾,经过对jvm源码(biasedLocking.cpp)的仔细分析和追踪,基本升级过程有了一个清晰的过程,现将升级流程阐述如下: &n…
java 多线程9 : synchronized锁机制 之 代码块锁
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchroniz…
java 隐式锁(synchonized)的隐式规则
public class CountA { private byte[] lock=new byte[1]; public synchronized void synchronizedA() throws Interru…
JUC之Future/Task框架
引入了一个”执行服务”的概念,它将”任务的提交”和”任务的执行”相分离,”执行服务”封装了任务执行的细节,对于…
JUC源码分析7-locks-AQS-共享模式
AQS中一定要记住2点: 1.处理流程: if(!请求成功) 加入队列 2.请求是对state的判断,AQS不关心你state表示什么,你可以表示状态也可以表示数量,由子类实现对请求的判断。将规则的判断和规则的处理分离,…