`

多线程 Volatile 关键字

    博客分类:
  • java
阅读更多
  • 加上此关键字后,该变量在别的线程中被修改了,能及时同步到别的线程
  • 直接上一个今天看到的一个demo
    volatile  boolean isExit ; //这里的关键字不加上的话,这个程序会一直跑下去,但是这个关键字加上了,这个程序会在一定时间内调用System.exit(0);
    
    int exitCount = 0;
    int swapCount = 0;
    
    public void tryExit() {
            exitCount ++ ;
            if(isExit == !isExit) {
                System.out.println("被调用了exit(0),exitCount["+exitCount+" 次],swapCount["+swapCount+" 次]");
                System.exit(0);
            }
        }
    
        public void swapValue()  {
            System.out.println("被调用了swap...");
            swapCount ++;
            isExit = !isExit ;
        }
    
        public static void main(String[] args) {
            final TestVolatile2 vo = new TestVolatile2();
            Thread exitThread = new Thread(){
                @Override
                public void run() {
                    System.out.println("exitThread start...");
                    while(true) {
                        vo.tryExit();
                    }
                }
            };
            exitThread.start();
            Thread swapThread = new Thread(){
                @Override
                public void run() {
                    System.out.println("swapThread start...");
                    while (true) {
                        vo.swapValue();
                    }
                }
            };
            swapThread.start();
    
        }
     结论: 加上了volatile关键字后,每次线程总是会去主线程中获取变量的值,所以isExit==!isExit才会有可能成立。
分享到:
评论

相关推荐

    Java多线程 volatile关键字详解

    Java多线程volatile关键字详解 Java多线程volatile关键字详解主要介绍了Java多线程volatile关键字的应用和原理。volatile是一种轻量同步机制,可以确保变量的可见性和顺序性,但不保证原子性。 volatile关键字的...

    Java线程:volatile关键字

    Java 线程 volatile 关键字详解 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。volatile 变量的同步性较差,但它有时更简单并且开销更低。volatile 变量可以被看作是一种 “程度较轻的 ...

    C++中volatile关键字及常见的误解总结

    C++中volatile关键字及常见的误解总结 C++中的volatile关键字是一种类型修饰符,用来修饰变量,表示该变量可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。 volatile关键字的主要作用是提供对...

    深入理解Java中的volatile关键字(总结篇)

    volatile的用法比较简单,只需要在声明一个可能被多线程同时访问的变量时,使用volatile修饰就可以了。volatile关键字的使用可以提供可见性和有序性保障,但不能保证原子性。 在Java并发编程中,volatile关键字是...

    java里的volatile关键字详解

    Java中的Volatile关键字详解是Java中的一种关键字,用于保证线程之间的可见性、原子性和有序性。下面是对Java中的Volatile关键字详解的知识点总结: 一、基本概念 1. 可见性:可见性是一种复杂的属性,因为可见性...

    Java中volatile关键字实现原理

    volatile关键字是Java语言中的一种机制,用于保证变量在多线程之间的可见性。它是Java.util.concurrent包的核心,没有volatile就没有那么多的并发类供我们使用。本文详细解读一下volatile关键字如何保证变量在多线程...

    线程安全、volatile关键字、原子性、并发包、死锁、线程池.md

    线程安全、volatile关键字、原子性、并发包、死锁、线程池学习笔记

    深入多线程之:内存栅栏与volatile关键字的使用分析

    内存栅栏和volatile关键字在多线程编程中扮演着至关重要的角色,它们是保证多线程之间正确同步和数据一致性的重要工具。本文将深入探讨这两个概念及其在.NET Framework中的使用。 首先,内存栅栏(Memory Barrier)...

    Java并发教程之volatile关键字详解

    在Java中,volatile关键字是解决多线程问题的重要工具。本文将会详细介绍volatile关键字的原理、使用场景和注意事项。 知识点1:理解多线程问题 在多线程环境下,线程安全问题是最重要的问题。Java内存模型(JMM)...

    Java并发编程volatile关键字的作用

    volatile关键字可以使变量在多线程之间可见,确保变量的最新值被所有线程看到。 在Java内存模型中,内存分为主内存和工作内存,每个线程有自己的工作内存,对于要操作的数据会从主内存拷贝一份到工作内存中,默认...

    内存栅栏和volatile关键字1

    内存栅栏和volatile关键字在多线程编程中扮演着至关重要的角色,它们是确保线程安全和正确数据同步的关键机制。本文将深入探讨这两个概念,以及它们如何在.NET环境中工作。 首先,我们要理解的是,现代计算机为了...

    深入了解Java中Volatile关键字

    2. 使用volatile关键字在多线程环境下:volatile关键字可以用于多线程环境下,保证线程之间操作的可见性和有序性。 四、示例代码 以下是一个示例代码,演示了volatile关键字的使用: ```java public class ...

    详解Java面试官最爱问的volatile关键字

    volatile关键字主要用于解决多线程环境下的共享变量问题,例如,多个线程访问同一个共享变量时,使用volatile关键字可以保证共享变量的内存可见性和禁止指令重排序。volatile关键字也可以用于解决缓存不一致问题,...

    volatile关键字的作用

    在多线程或多进程环境中,使用volatile关键字可以保证变量的可见性和修改顺序。 * 需要实时更新的变量。在某些情况下,需要实时更新变量的值,例如在游戏或仿真系统中。使用volatile关键字可以确保变量的值被及时...

    volatile关键字 Const关键字 static关键字 mutable 关键字

    这通常发生在多线程环境、硬件交互或中断服务程序中。当一个变量被声明为`volatile`时,编译器不会对它进行优化,每次访问该变量时都会从内存中读取最新值。例如: ```cpp volatile int sensorValue; // 表示传感器...

    java多线程编程之慎重使用volatile关键字

    在Java多线程编程中,volatile关键字扮演着重要的角色,它确保了被声明为volatile的变量在多个线程之间的可见性。然而,尽管volatile能够提供一定程度的线程安全,但并不能保证所有操作都是原子性的。这正是为什么在...

    详细分析java并发之volatile关键字

    Java 中的 volatile 关键字是 Java 并发编程中的一种关键字,它用于修饰变量,确保在多线程环境下变量的可见性和有序性。volatile 关键字的主要作用是防止编译器对变量的读写优化,确保线程之间的可见性和有序性。 ...

    Java Volatile关键字同步机制详解

    Java Volatile关键字是Java语言中的一种同步机制,它可以保证在多线程环境下变量的可见性和原子性。通过使用Volatile关键字,可以确保在多线程环境下对变量的修改是可见的,并且可以保证对变量的读写操作的原子性。 ...

    C++中volatile关键字的使用详解以及常见的误解

    在多线程、多进程、硬件寄存器、IO端口等场景下,变量的值可能会被外部因素改变,volatile关键字可以确保编译器每次访问变量时都从内存中读取最新的值,而不是使用缓存的值。 volatile关键字的使用语法: int ...

    Java中Volatile关键字详解及代码示例

    Volatile关键字的使用场景非常广泛,例如在多线程环境下,需要确保多个线程之间对内存写入操作的可见性时,可以使用Volatile关键字来修饰变量。例如: ```java public class VolatileExample { private volatile ...

Global site tag (gtag.js) - Google Analytics