adm1989

导航

2013年8月31日 #

(Java 多线程系列)java synchronized详解

摘要: synchronized简介 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。同步代码块包括两部分:一个作为锁对象的引用,一个作为由这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所有的对象。静态的synchronized方法以class对象作为锁。synchronized(this){ //访问或修改由锁保护的共享状态} 每个Java对象都可以用做一个实现同步的锁,这些锁称为内置锁或监视锁,Java的内置锁相当于一种互斥锁,这意味着最多只有一个线... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(1365) 评论(0) 推荐(0) 编辑

(Java 多线程系列)java volatile详解

摘要: 在前面的文章里面介绍了synchronized关键字的用法,这篇主要介绍volatile关键字的用法。 Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其它线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其它内存操作一起重排序。Volatile变量不会被缓存在寄存器或者其它对处理器不可见的地方,因此在读取volatile类型的变量时,总会返回最新写入的值。volatile boolean asleep;while(!asleep){ //do something} vola... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(2242) 评论(0) 推荐(0) 编辑

Java 多线程系列

摘要: 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。 Java中的主要同步机制是关键字synchronized,它提供了一种独占的加锁方式,但是同步这个术语还包括volatiel类型的变量,显式锁(Explicit Lock)以及原子变量。 1.概念说明 线程安全:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 原子操作:是指对于访问同一个状态的所有操作(包括该操作本身)来说,... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(292) 评论(0) 推荐(0) 编辑