java中线程同步
2016-02-23 16:54
381 查看
在大多数多线程应用中,经常有两个或两个以上的线程对同一数据存取。从而出现竞争条件。
java从1.0开始,java中的每个对象都有一个内部锁。如果一个方法用了synchronized,那么要调用这个方法,线程须获得内部的对象锁。
2、ReentrantLock类(即Lock锁)
一旦一个线程获得了锁对象,其它线程都无法通过lock()语句。
当其它线程调用lock时,它们被阻塞,直到第一个线程释放锁对象。
3、java.util.concurrent包机制
一、三种机制防止并发代码访问干扰
1、synchronized关键字java从1.0开始,java中的每个对象都有一个内部锁。如果一个方法用了synchronized,那么要调用这个方法,线程须获得内部的对象锁。
public synchronized void method() { your code }等价于
public void method() { this.intrinsicLock.lock(); try { your code }finally { this.intrinsicLock.unlock(); } }
2、ReentrantLock类(即Lock锁)
Lock myLock = new ReentrantLock();
//注:以下部分可放入目标方法内部使用 myLock.lock(); try { 临界区 } finally { myLock.unlock(); }这一结构确保任何时刻只有一个线程进入临界区。
一旦一个线程获得了锁对象,其它线程都无法通过lock()语句。
当其它线程调用lock时,它们被阻塞,直到第一个线程释放锁对象。
3、java.util.concurrent包机制
相关文章推荐
- SpringMVC Ehcache的缓存实现
- 快速上手Spring--7. ref的用法
- Maven学习 (三) 使用m2eclipse创建web项目
- @Transient----------------springMVC
- java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
- Eclipse设置-让编程更舒服02
- spring4+mybaits3整合—项目Demo
- Maven学习 (二) Eclipse 上安装 Maven3插件
- 通过java获取html中所有的图片路径
- MockWebServer API Javadoc
- Myeclipse快捷键大全
- Java语句及控制台输入
- eclipse相关设置
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)问题
- java自带线程池和队列详细讲解
- jsp向struts传值的三种方法
- 【问题答疑】eclipse无法在线安装genymotion插件
- Java中的StringTokenizer类的使用方法
- 解决Java调用Azure SDK证书错误javax.net.ssl.SSLHandshakeException
- java中Collections.sort排序详解