开发者社区> 老朱教授> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Java6学习笔记】多线程编程中使用volatile保障原子性

简介:
+关注继续查看
当多个线程使用同一个变量时,每个线程都在其本地缓冲中有一个这个变量的拷贝,对这个变量的改变实际上是对这个复制品进行改变。而另一个线程在使用这个变量时还可能一无所知。为了避免这个问题,使用volatile这个关键字对便变量进行修饰,在对变量进行改变时直接作用于主内存。
package javabeat.samples; 
class ExampleThread extends Thread { 
    private volatile int testValue; 
    public ExampleThread(String str){ 
        super(str); 
    } 
    public void run() { 
        for (int i = 0; i < 3; i++) { 
            try { 
                System.out.println(getName() + " : "+i); 
                if (getName().equals("Thread 1 ")) 
                { 
                    testValue = 10; 
                } 
                if (getName().equals("Thread 2 ")) 
                { 
                    System.out.println( "Test Value : " + testValue); 
                }                
                Thread.sleep(1000); 
            } catch (InterruptedException exception) { 
                exception.printStackTrace(); 
            } 
        } 
    } 

public class VolatileExample { 
    public static void main(String args[]) { 
        new ExampleThread("Thread 1 ").start(); 
        new ExampleThread("Thread 2 ").start(); 
    } 
}



本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822289.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于JAVA中volatile使用的一些总结
太敏感的人会体谅到他人的痛苦,自然就无法轻易做到坦率。所谓的坦率,其实就是暴力。-----太宰治《候鸟》
36 0
Java进阶笔记——你需要了解的volatile 关键字
  前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能。 首先来看看为什么会出现这个关键字。 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。
957 0
(五)Java并发学习笔记--线程安全-同步容器
一、为什么会出现同步容器? 在Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map。 List、Set、Queue接口分别继承了Collection接口,Map本身是一个接口。
1554 0
Java多线程学习(三)volatile关键字
欢迎关注我的微信公众号:**“Java面试通关手册”**(分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取)。另外我创建了一个Java学习交流群(群号:**174594747**),欢迎大家加入一起学习,这里更有面试,学习视频等资源的分享。
1749 0
《Java线程与并发编程实践》—— 2.4 volatile和final变量
你之前学到的同步展示了两种属性:互斥性和可见性。synchronized关键字与两者都有关系。Java同时也提供了一种更弱的、仅仅包含可见性的同步形式,并且只以volatile关键字关联。 假设你自己设计了一个停止线程的机制(因为无法使用Thread不安全的stop()方法))。
1798 0
+关注
3545
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载