AtomicInteger,这是java提供的一个原子操作Integer的类,这在我眼里还是一个稀客,可能是不怎么感兴趣,以至于一直当作简单的volatile,这也是我的拙见。其实这家伙还是挺好用的,在常见的场景中,如count++或++count,这在java多线程的使用中是不安全的,而AtomicInteger属于原子操作(线程安全),可以在下面的例子中看出来。
package org.ja...
分类:
编程语言 时间:
2015-07-23 20:06:01
阅读次数:
145
一、数据完整性HDFS的数据完整性 1、hadoop自带一套原子操作用于IO操作; 2、HDFS数据完整性:会对写入的所有数据计算校验和,并在读取数据时验证校验和,针对每个io.bytes.per.checksum指定字节的数据计算校验和; 3、由于HDFS存储着每个数据块的复本,因为它可以通过数据...
分类:
其他好文 时间:
2015-07-21 12:36:39
阅读次数:
131
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作1)atomic 设置成员变量的@property属性时,atomic是默认值,提供多线程安全 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic后setter函数会变成下...
分类:
其他好文 时间:
2015-07-21 01:07:09
阅读次数:
214
原文地址:http://www.infoq.com/cn/articles/atomic-operation1. 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本...
分类:
编程语言 时间:
2015-07-20 18:57:03
阅读次数:
150
0. 背景 原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题:1. 多线程程序中对变量的读写操作...
分类:
编程语言 时间:
2015-07-15 19:30:48
阅读次数:
202
i++是否原子操作 不是原子操作。理由:1.i++分为三个阶段:内存到寄存器寄存器自增回内存这三个阶段中间都可以被中断分离开.2.++i首先要看编译器是怎么编译的,某些编译器比如VC在非优化版本中会编译为以下汇编代码:__asm{ moveax,dword ptr[i] inc eax movd.....
分类:
其他好文 时间:
2015-07-15 14:38:21
阅读次数:
75
如果你用Linux perf tool的top命令做热点纠察时,你会发现,前10名嫌疑犯里面肯定有好几个都是锁!在进行并行多处理时,不可避免地会遇到锁的问题,这是不可避免的,因为这一直以来也许是保护共享数据的唯一方式,被保护的区域就是临界区。而我们知道,锁的开销是巨大的,因为它不可避免地要么等待,要么让别人等待,然而这并不是开销的本质,开销的本质在于很多锁都采用了“原子操作”这么一个技术,如此一个...
分类:
系统相关 时间:
2015-07-12 23:22:23
阅读次数:
186
synchronized关键字方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程调用时,其他线程处于等待状态)所有的Java对象都有一个与synchronzied关联的监视器对象(monitor),允许线程在该监视器对象上进行加锁和解锁操作。a、静态方法:Java类对应的Cl...
分类:
编程语言 时间:
2015-07-12 23:11:11
阅读次数:
260
1、MSBuild四个基本块(属性、项、任务、目标):MSBuild属性:属性是一些键/值对,主要用来存储一些配置信息。MSBuild项:主要是存储一些项目文件信息,以及文件的元数据信息(如版本号)。MSBuild任务:Build过程中的一些原子操作(如CSC编译cs文件、MakeDir创建目录)M...
分类:
Web程序 时间:
2015-07-07 16:43:53
阅读次数:
269
上面一篇多是对有序集合的处理,这里对常用的操作命令进行介绍。一、INCR : 原子操作防并发,将key值自增1,如果非数字报错,如果不存在key,则自动创建。INCR key例子: INCR myNum //如果myNum不存在,则初始化为0,并自增为1典型使用: 计数器 ...
分类:
其他好文 时间:
2015-07-07 16:18:41
阅读次数:
192