原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Th ...
分类:
编程语言 时间:
2017-05-15 11:54:56
阅读次数:
221
Synchronized Java中的每个对象都可以作为锁。 锁的内部机制 一般锁有4种状态:无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态。 在进一步深入之前,我们先认识下两个概念:对象头和monitor。 什么是对象头? 在hotspot虚拟机中,对象在内存的分布分为3个部分:对象头,实例数据 ...
分类:
其他好文 时间:
2017-05-14 18:04:39
阅读次数:
189
多线程(JDK1.5的新特性互斥锁)(掌握)1.同步·使用ReentrantLock类的lock()和unlock()方法进行同步2.通信·使用ReentrantLock类的newCondition()方法可以获取Condition对象·需要等待的时候使用Condition的await()方法, 唤 ...
分类:
编程语言 时间:
2017-05-14 01:05:31
阅读次数:
200
一.synchronized的功能扩展:重入锁(java.util.concurrent.locks.ReentrantLock) 重入锁可以完全替代synchronized关键字。在JDK 5.0的早期版本中,重入锁的性能远远好于synchronized,但从JDK 6.0开始,JDK在syn-c ...
分类:
编程语言 时间:
2017-05-14 00:57:49
阅读次数:
210
1 package com.zym.height.Lock01; 2 3 import java.util.concurrent.locks.Lock; 4 import java.util.concurrent.locks.ReentrantLock; 5 6 public class UseRe ...
分类:
其他好文 时间:
2017-05-12 18:52:53
阅读次数:
217
1. 锁的劣势:(包括syncronized实现的内置锁、ReentrantLock) (1)开销大:线程的挂起与恢复存在很大开销,并且存在着较长时间的中断。 2. volatile变量: (1)优势:更轻量级的同步机制,在使用这些变量时不会发生上下文切换或线程调度,提供了内存可见性保证 (2)劣势 ...
分类:
其他好文 时间:
2017-05-06 15:08:19
阅读次数:
271
1. Lock接口:定义了一组抽象的加锁操作,提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有的加锁和解锁的方法都是显示的。 2. ReentrantLock锁:实现了Lock接口,并提供了与synchronized相同的互斥性和内存可见性,也提供了可重入的加锁语义。finally后 ...
分类:
其他好文 时间:
2017-05-06 14:12:38
阅读次数:
194
在Java多线程中,除了使用synchronize关键字来实现线程之间的同步互斥,还可以使用JDK1.5中新增的RetrantLock类来实现同样的效果。RetrantLock类的扩展功能也更加强大,比如具有嗅探锁定,多路分支通知等功能,在使用上也比synchronize更为灵活。 借助于Condi ...
分类:
编程语言 时间:
2017-04-30 19:24:16
阅读次数:
213
新建一个ReentrantLock对象,主线程第一次调用ReentrantLock/lock -> NonfairSync/lock主线程成功获取锁。 子线程1调用ReentrantLock/lock -> NonfairSync/lock -> AbstractQueuedSynchronizer ...
分类:
编程语言 时间:
2017-04-28 20:16:59
阅读次数:
421
非公平锁和公平锁在获取锁的方法上,流程是一样的;区别主要表现在“尝试获取锁的机制不同”。“公平锁”在每次尝试获取锁时,都是采用公平策略(根据等待队列依次排序等待);而“非公平锁”在每次尝试获取锁时,都是采用的非公平策略(无视等待队列,直接尝试获取锁,如果锁是空闲的,即可获取状态,则获取锁)。 一、获 ...
分类:
其他好文 时间:
2017-04-26 11:54:53
阅读次数:
187