This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
JVM底层又是如何实现synchronized的? | |
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 | |
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? | |
本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synchronized的实现: | |
synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null对象 作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为 Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。在 HotSpot JVM实现中,锁有个专门的名字:对象监视器。 | |
1. 线程状态及状态转换 | |
当多个线程同时请求某个对象监视器时,对象监视器会设置几种状态用来区分请求的线程: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
J.U.C并发框架(1) | |
翻译:书卷多情 | |
在J2SE1.5中,java.util.concurrent包下的大部分同步工具(锁、阻塞等)以AbstractQueuedSynchronizer类为基础来构建。这个框架提供了一些常用机制用于自动管理并发状态、阻塞及非阻塞线程和队列。本论文描述了该框架的根源、设计实现、用法及性能。 | |
关键字:synchronized, java | |
1、介绍 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class sexIdentifier { | |
public static final String HOMOSEXUAL = "homo"; | |
public static final String STRAIGHT = "straight"; | |
public static void main(String args[]){ | |
public String identifyGender(String yourGender, String belovedGender){ | |
if(yourGender.equals(belovedGender)){ | |
return HOMOSEXUAL; | |
}else{ |
NewerOlder