同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 写三个线程分别调用这三个方法: 写个main函数启动这三个线程: 看一下运行结果: 从运行结果来,对printC( ...
分类:
编程语言 时间:
2016-06-15 19:14:52
阅读次数:
191
脏读 一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。 多线程线程安全问题示例 看一段代码: public class ThreadDomain13 { private ...
分类:
编程语言 时间:
2016-06-15 19:11:49
阅读次数:
171
这一章节我们讨论一下synchronized不但具备操作的同步性,还具备volatile的可视性。1.引入之前的异步死循环代码:package com.ray.deepintothread.ch03.topic_3;
public class DeadForAsychn {
public static void main(String[] args) throws InterruptedEx...
分类:
编程语言 时间:
2016-06-12 02:38:53
阅读次数:
160
synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。 1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如:public synchronized void ...
分类:
编程语言 时间:
2016-06-11 11:46:33
阅读次数:
141
一直想把这个特别重要的关键词的底层实现搞明白。(当然现在也没有完全明白,如果有错误以后修改这篇文章) 首先,这个关键词synchronize可以说是个语法糖,它的具体用法网上很多博客都讲的比较明了了。 简而言之就是对一个对象“加锁”。首先,找个地方的对象不一定是堆里面的类的实例对象,也有可能是方法区 ...
分类:
编程语言 时间:
2016-05-27 20:07:20
阅读次数:
250
这一章节我们来讨论一下synchronized ()代码块的另一个用法,它不单可以用this,也可以用其他对象。1.代码清单package com.ray.deepintothread.ch02.topic_13;
/**
*
* @author RayLee
*
*/
public class ObjectLock {
public static void main(String[...
分类:
编程语言 时间:
2016-05-07 07:24:54
阅读次数:
221
这一章节我们来讨论游戏,synchronized持有对象锁与类锁的不同点-两种锁是并行的东西,没有交集。1.同步持有对象锁或者类锁package com.ray.deepintothread.ch02.topic_3;
public class SynchInstance5 {
public static void main(String[] args) throws InterruptedE...
分类:
编程语言 时间:
2016-04-29 18:59:13
阅读次数:
249
这一章节我们来讨论一下synchronized持有对象锁。1.当所有方法都不使用同步的时候代码清单package com.ray.deepintothread.ch02.topic_2;
public class SynchInstance1 {
public static void main(String[] args) throws InterruptedException {
MyT...
分类:
编程语言 时间:
2016-04-29 18:59:02
阅读次数:
232
这一章节我们来讨论一下synchronized持有对象锁。1.当所有方法都不使用同步的时候代码清单package com.ray.deepintothread.ch02.topic_2;
public class SynchInstance1 {
public static void main(String[] args) throws InterruptedException {
MyT...
分类:
编程语言 时间:
2016-04-26 21:11:04
阅读次数:
285
这一章节我们来讨论游戏,synchronized持有对象锁与类锁的不同点-两种锁是并行的东西,没有交集。1.同步持有对象锁或者类锁package com.ray.deepintothread.ch02.topic_3;
public class SynchInstance5 {
public static void main(String[] args) throws InterruptedE...
分类:
编程语言 时间:
2016-04-26 21:08:43
阅读次数:
191