java中的Volatile与Atomics
来源:互联网 发布:saas软件合同模板 编辑:程序博客网 时间:2024/05/16 11:48
Volatile
Volatile保证在变量在多线程的可见性。用于修饰变量。
代码如下:
public class VolatileDemo1 {volatile int a;public int getA() {return a;}public void setA(int a) {this.a = a;}public void testA1(final VolatileDemo1 vd){Thread thread = new Thread(){public void run() {for (int i=1; i<5; i++) {vd.setA(i);System.out.println("我被修改为:" + vd.getA());}}};thread.start();}public void testA2(final VolatileDemo1 vd){Thread thread = new Thread(){public void run() {System.out.println("我获取到的值:" + vd.getA());}};thread.start();}public static void main(String[] args) {VolatileDemo1 vd1 = new VolatileDemo1();vd1.testA1(vd1);vd1.testA2(vd1);}}
Atomics
import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;public class AtomicsDemo {private AtomicInteger atomicCount = new AtomicInteger();private int count = 0;public int increase() {synchronized (this) {count = count + 1;return count;}}public int decrease() {synchronized (this) {count = count - 1;return count;}}public int atomicIncrease() {return atomicCount.incrementAndGet();}public int atomicDecrease() {return atomicCount.decrementAndGet();}public static void main(String[] args) throws InterruptedException {long startTime = System.currentTimeMillis();final AtomicsDemo ad = new AtomicsDemo();for (int i=0; i<1000; i++) {Thread thread = new Thread(){public void run() {ad.increase();//ad.atomicIncrease();}};thread.start();}TimeUnit.SECONDS.sleep(3);System.out.println("时间:" + (System.currentTimeMillis() - startTime));System.out.println("count大小:" + ad.count);System.out.println("atomicCount大小:" + ad.atomicCount);System.out.println("=========");long startTime2 = System.currentTimeMillis();//final AtomicsDemo ad = new AtomicsDemo();for (int i=0; i<1000; i++) {Thread thread = new Thread(){public void run() {//ad.increase();ad.atomicIncrease();}};thread.start();}TimeUnit.SECONDS.sleep(3);System.out.println("时间:" + (System.currentTimeMillis() - startTime2));System.out.println("count大小:" + ad.count);System.out.println("atomicCount大小:" + ad.atomicCount);}}
0 0
- java中的Volatile与Atomics
- java中的volatile与atomic
- Java中的synchronized与volatile关键字
- 关于java中的synchronization与volatile关键字
- Java中的volatile关键字
- Java中的volatile关键字
- java中的volatile
- Java中的volatile关键字
- Java中的volatile关键字
- Java中的volatile关键字
- Java中的volatile关键字
- Java中的volatile关键字
- Java中的Volatile关键字
- java中的Volatile
- 浅谈java中的volatile
- Java 语言中的 volatile
- JAVA中的volatile关键字
- Java中的volatile关键字
- jeecms网站手机访问的处理
- 著名的Oracle公司中文名字为什么叫“甲骨文”?
- UITextField的常见属性
- java多线程(1)---基础
- iOS加急审核
- java中的Volatile与Atomics
- Journal - 高级架构 Opencart 主题模板 ABC-0016-04
- 黑马程序员——android开发中的eclipse快捷键
- java保护性拷贝(effective java)
- java中的线程协调与线程间的数据交换
- php检查字符串中是否有汉字/数字/英文字母
- poj1419 点独立集/最大团
- 产生low--high之间的随机数。
- Android Drawable 那些不为人知的高效用法