各位 Java 开发者,synchronized 竟然还有这作用,作 Java 开发的有多少人知道(今天刚刚知道的)。发出来给大家看看:
“线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的 所有修改。注意:不只是 线程B在 synchronized块中所作的修改,还包含 线程B在进入synchronized之前的所有修改 也都能看到”
http://www.iteye.com/topic/875420 在讲述DCL时,里面的情形四 清楚的谈到了这种情况。这里单独开个帖列出来。
这样,synchronized就有了三个作用
1、作为互斥锁使用(synchronized所持有的锁,同一个时刻只能由一个线程所占有)
2、对于同步块内部访问到的数据,进入前和出来后,强制cache和main memory进行同步
3、线程A的lock操作 能看见 线程B对同一个对象unlock操作之前的
所有修改
下面这张图,上部分截取自 JSR-133,下部分截取自 JEREMY MANSON(JSR-133作者之一)的一次讲课(
http://www.youtube.com/watch?v=WTVooKLLVT8&feature=g-wl,需梯子)
- 大小: 557.7 KB
分享到:
相关推荐
2. 第二个难题可能涉及到Java内存模型和线程同步。例如,一个关于volatile关键字的问题,测试开发者是否理解其在多线程环境中的作用。volatile确保了变量在所有线程间的可见性,但不保证原子性。如果一个变量被多个...
通过在方法或代码块上使用`synchronized`,可以确保同一时间只有一个线程能访问这些代码区域,从而有效避免了多线程环境下的数据竞争和不一致性问题。 #### 二、synchronized的作用机制 `synchronized`主要通过对象...
第三版》是一本深受Java开发者欢迎的实战指南,旨在通过丰富的实例来深入浅出地讲解Java编程的各个方面。这本书的高清PDF版本提供了清晰易读的阅读体验,而配套的代码则为读者提供了实践操作的机会,加深对理论知识...
在Java开发中,调用第三方短信接口是一项常见的任务,用于实现验证码发送、通知提醒等功能。以下将详细讲解这个过程中的关键知识点。 1. **HTTP请求**:大部分第三方短信平台提供的API是基于HTTP协议的,因此Java中...
Java并发编程中的synchronized关键字是实现线程安全的重要工具,它提供了一种互斥访问机制,确保了共享数据在同一时刻只能被一个线程访问。synchronized关键字有三种主要的应用方式: 1. 修饰实例方法:当...
《Head First Java 清晰版(3)》是学习Java编程的一款优秀教材,专注于第八到第十章的内容。这本书以其独特的视觉设计和易于...无论你是初学者还是有一定经验的开发者,这三章内容都将为你在Java世界中开辟新的道路。
《JAVA线程第三版》是Java并发编程领域的一本经典著作,主要针对Java线程的深入理解和实践提供了详尽的指导。...书中的实例和最佳实践对于任何希望提升并发编程技能的Java开发者来说都是宝贵的资源。
Java 浏览器是一种使用Java编程语言开发的网络浏览应用,虽然相对少见,但它的存在为Java开发者提供了一个独特的学习和研究平台。由于Java的跨平台特性,这种浏览器理论上可以在任何支持Java虚拟机(JVM)的设备上...
通过分析和实践《疯狂Java第三版》的源码,读者不仅可以巩固理论知识,还能提升实际编程能力,为成为一名优秀的Java开发者打下坚实基础。代码是最好的老师,深入研究源码,将使你在Java的世界里游刃有余。
总之,《JAVA线程(第三版)》全面涵盖了Java多线程编程的各个方面,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过深入学习这本书,你可以掌握如何在Java环境中有效地管理和控制线程,避免潜在的问题,...
《Java2实用教程(第三版)》是一本深入浅出的Java编程指南,它涵盖了Java语言的核心概念和技术,旨在帮助读者掌握Java编程的基础与高级应用。这本书的特点在于其丰富的实例代码,让学习者能够通过实践更好地理解...
《Java经典实例(第三版)》是一本专为已经有一定Java基础的程序员设计的进阶读物,旨在通过300个精心挑选的Java应用技巧,深入探讨和扩展Java编程的知识面。这本书覆盖了Java语言的各个核心领域,包括但不限于基本...
这些内容构成了Java编程的基石,对任何Java开发者来说都是必不可少的知识。 2. **类与对象**:"第08章"深入探讨了Java中的类和对象,这是面向对象编程的核心。你将了解如何定义类、创建对象,以及封装、继承和多态...
在“数百个java经典代码第三部分”这个资源中,我们可以看到三个章节的代码示例,分别对应于第7章、第9...总的来说,“数百个java经典代码第三部分”是一个宝贵的资源,可以帮助Java开发者提升技能,应对复杂项目挑战。
《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...
【铁路订票系统JAVA实现】是一个面向初学者和中级JAVA开发者的学习资源,旨在提供一个实际的项目案例,帮助他们深入理解和应用JAVA编程语言。这个系统是基于JAVA技术栈构建的,能够模拟真实的在线订票流程,包括用户...
蓝桥杯比赛旨在检验参赛者的编程技能、算法理解和问题解决能力,对于JAVA开发者来说,它是一个重要的检验平台。 【描述】:描述中的“蓝桥杯第三届JAVA软件开发本科B组个人赛选拔赛真题”暗示了这是一个针对本科...
《Java完美编程(第三版)》是一本深入探讨Java编程技术的专业书籍,旨在帮助读者全面理解和掌握Java语言的核心概念和高级特性。此书分为多个章节,涵盖了从基础语法到复杂应用的广泛内容,以下是各章节重点知识的概述...