- 浏览: 472857 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (501)
- java基础 (45)
- struts2 (22)
- WebService (9)
- JavaScript (21)
- Java多线程 (37)
- Hibernate (5)
- Spring (31)
- 数据库 (4)
- 软件设计 (1)
- J2ee (8)
- oracle (2)
- Linux (41)
- Hadoop (1)
- Java集合 (3)
- 设计模式 (3)
- 高并发 (1)
- JVM (15)
- xml (2)
- 数据库事务 (3)
- 动态代理 (1)
- tomcat (9)
- 其他 (4)
- DNS域名 (3)
- CDN (2)
- javaapi (1)
- 编码问题 (6)
- CSS样式 (1)
- TCP学习 (3)
- Java IO (6)
- 常见异常问题 (1)
- 网络编程 (1)
- 开发工具 (5)
- Maven (10)
- ibatis (12)
- Velocity (8)
- Jquery (11)
- HTTP (9)
- 中间件 (3)
- 软件管理 (2)
- Html (2)
- Redis (3)
- 服务器 (1)
- 分布式文件系统 (1)
- 异常 (1)
- 杂谈 (1)
- ICE (4)
- cxf (1)
- Apache ActiveMQ (1)
- 好文 (1)
- Json (1)
- junit (2)
- JMS (1)
- java工具 (1)
- memcache (5)
- 加密解密 (1)
- powerdesigner (3)
- Enterprise Architect (1)
- ide (0)
- hessian (3)
- svn (1)
- xstream (1)
- idea (12)
- HttpClient (2)
- solr (4)
- lucene (2)
- 正则 (2)
- 商品设计 (1)
- poi (1)
- nginx (8)
- java基础;Java集合类 (1)
- javassist (1)
- JMeter (1)
- springmvc (1)
- Java对象序列化 (2)
- java nio (4)
- RandomAccessFile (1)
- socket (1)
- netty (3)
- 博客 (1)
- Spring AOP (7)
- mysql (10)
- 远程调用 (2)
- https (3)
- 加密 (3)
- sql (1)
- git (1)
- webx (1)
- eclipse (1)
- 上传下载 (2)
- log4j (4)
- Mac 系统使用 (6)
最新评论
-
wanxiaotao12:
aswang 写道总结的不错,
正在读《java并发编程实战 ...
Java并发编程实战-学习笔记 -
aswang:
总结的不错, 正在读《java并发编程实战》,看到其中的不变性 ...
Java并发编程实战-学习笔记 -
lianhan3344:
感谢博主分享!!!!
深入剖析Tomcat How+Tomcat+Works中文367页.pdf -
vict0323:
真的是酱紫么?求真相
Spring 实际开发项目中, 是否要default-autowire="byName"
在使用volatile关键字时要慎重,并不是只要简单类型变量使用volatile修饰,对这个变量的所有操作都是原来操作,当变量的值由自身的上一个决定时,如n=n+1、n++等,volatile关键字将失效,只有当变量的值和自身上一个值无关时对该变量的操作才是原子级别的,如n = m + 1,这个就是原子级别的。所以在使用volatile关键时一定要谨慎,如果自己没有把握,可以使用synchronized来代替volatile。
所以volatile并不能保证原子性, 只能保证可见性
synchronized锁既可以保证原子性, 也有可见性
发表评论
-
进程与线程的一个简单解释
2014-07-09 00:39 443进程与线程的一个简单解释 -
Callable和Future
2014-04-21 08:09 699Callable接口类似于Runnable,从名字就可以看 ... -
用实例揭示notify()和notifyAll()的本质区别
2014-04-15 08:43 492用实例揭示notify()和notifyAll()的本质区别 -
多线程
2014-02-15 20:44 425http://www.cnblogs.com/hoojo/ar ... -
Java偏向锁实现原理(Biased Locking)
2013-12-18 23:12 670Java偏向锁实现原理(Biased Locking) -
聊聊并发(一)——深入分析Volatile的实现原理
2013-09-12 00:40 736聊聊并发(一)——深入分析Volatile的实现原理 -
原子变量与原子类
2013-07-15 14:36 859Java多线程(二)之Atomic:原子变量与原子类 -
正确理解ThreadLocal
2013-05-13 00:25 749一般用法: class Test{ ... -
Future
2013-04-28 00:10 841如果想获取某一线程执行后的结果, 则使用Callable( ... -
ThreadPoolExecutor
2013-04-27 23:40 694ThreadPoolExecutor线程池 ... -
BlockingQueue深入分析
2013-04-27 23:18 785http://jiangzhengjun.iteye.co ... -
java线程组
2013-04-27 00:30 762线程组:线程组存在的意义,首要原因是安全。java默认创建的线 ... -
Java Thread join() 的用法
2013-04-25 00:58 691Java Thread join() 的用法 -
Java 线程池学习
2013-04-25 00:39 680Java 线程池学习 -
Java线程同步机制synchronized关键字的理解
2013-03-29 10:49 1003由于同一进程的多个线程共享同一片存储空间,在带来方便的同时 ... -
Java线程中断的本质和编程原则
2013-03-29 00:06 799在历史上,Java试图提供过抢占式限制中断,但问题多多, ... -
java线程池Executor
2013-03-26 23:58 828http://www.iteye.com/topic/ ... -
信号量
2013-03-25 22:34 851Java线程:新特征-信号量 Java的信号量实际 ... -
Java多线程共享数据问题
2013-03-21 02:32 1579两个人分别用银行卡, 存折同时取钱, 以下是代码,并执行: ... -
Thread守护线程
2013-01-17 15:16 876概念 Java有两种Thread:守护线程、用户线程 ...
相关推荐
Java 中 volatile 和 synchronized 的区别与联系 Java 中的 volatile 和 synchronized 是两种不同的关键字,它们都是用来解决多线程编程中出现的问题,但是它们的作用机制和使用场景却不同。 volatile volatile ...
### volatile与synchronized的区别 #### 一、锁的特性:互斥与可见性 在并发编程中,锁作为实现线程安全的一种手段,其核心作用在于提供两种特性:互斥和可见性。 - **互斥**:互斥是指在任何时刻,只允许一个...
Java关键字volatile和synchronized作用和区别 Java关键字volatile和synchronized是Java语言中两个常用的关键字,它们都是用来解决多线程编程中的同步问题的,但它们的作用和用法却有所不同。 volatile关键字是变量...
volatile与synchronized的区别** `synchronized`提供了数据一致性,但会阻止线程并发执行,造成阻塞。而`volatile`关键字则可以保证变量的可见性,但不会提供互斥访问。因此,`volatile`通常用于读多写少的情况,...
在Java编程语言中,`synchronized`关键字是一个至关重要的概念,它主要用于实现线程同步,以确保多线程环境下的数据一致性与安全性。本篇文章将深入探讨`synchronized`的使用,包括其基本原理、使用方式以及实际应用...
与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。 volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说...
Java并发编程中的Synchronized和Volatile详解 在Java并发编程中,Synchronized和Volatile是两个非常重要的概念,它们都是用于实现线程安全的机制。下面我们将详细介绍Synchronized和Volatile的区别和使用。 ...
在Java多线程编程中,volatile和synchronized是两种重要的同步机制,用于处理并发环境下的数据一致性问题。这里我们将深入探讨这两个关键字的用法、作用以及它们之间的区别。 首先,volatile关键字。volatile确保了...
6. **synchronized与 volatile 的区别**: - `volatile`主要保证变量的可见性和有序性,但无法保证原子性,而`synchronized`则能保证原子性、可见性和有序性。 - `volatile`适用于读多写少的情况,而`synchronized...
在Java编程语言中,`synchronized`关键字是用于实现线程同步的重要机制,它确保了在多线程环境中的数据一致性与安全性。本篇将详细解析`synchronized`的关键特性和使用方法,帮助开发者深入理解如何在并发编程中有效...
3. 有序性:Java语言提供了volatile 和synchronized 两个关键字来保证线程之间操作的有序性,volatile 是因为其本身包含“禁止指令重排序”的语义,synchronized是由“一个变量在同一个时刻只允许一条线程对其进行...
Java 多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池) Java 多线程是 Java 语言中的一种并发编程机制,允许程序同时执行多个线程,以提高程序的执行效率和响应速度。 Java 多线程机制提供了...
五、synchronized与volatile比较 `synchronized`提供了线程安全的读写,而`volatile`则保证了变量的可见性,但不保证原子性。在某些情况下,`volatile`可能比`synchronized`更高效,但不能替代`synchronized`提供的...
Java中的`volatile`关键字是多线程编程中一个非常重要的概念,它用于修饰变量,确保在并发环境下,多个线程可以正确地共享和同步数据。本文将深入探讨`volatile`关键字的工作原理、特性以及如何使用它来解决多线程中...
Java线程之线程同步synchronized和volatile详解 Java线程同步是Java多线程编程中非常重要的一个方面,主要涉及到线程安全、可见性和有序性三个方面。Java提供了多种同步机制来解决线程安全问题,包括synchronized和...
Java并发编程中,volatile关键字扮演着重要的角色,它是一种轻量级的同步机制,与synchronized相比,volatile在性能上更优,因为它不会导致线程阻塞。在深入理解volatile的关键特性之前,我们需要先了解Java内存模型...
### Java并发编程:volatile关键字解析 #### 一、内存模型的相关概念 在深入了解`volatile`关键字之前,我们首先需要理解计算机内存模型的一些基本概念。在现代计算机系统中,CPU为了提高执行效率,会将频繁访问的...
【volatile关键字】在Java中,volatile是一个关键字,用于标记变量为共享变量,确保所有线程都能看到该变量的最新值。当一个变量被声明为volatile时,它的修改会立即反映到其他线程中,避免了缓存导致的可见性问题。...
这是通过Java内存模型(JMM)中的主内存与工作内存之间的交互来实现的,`volatile`变量的读写操作会强制刷新工作内存,确保了数据的一致性。 **有序性**: `volatile`关键字还能够防止指令重排序。在多线程环境下,...
下面我们将深入探讨`volatile`关键字的原理、使用场景以及与`synchronized`的区别。 一、`volatile`关键字的语义分析 1. **保证可见性**:当一个线程修改了`volatile`变量的值,其他所有线程都能立即看到这个变化...