`
m635674608
  • 浏览: 5028974 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java并发中 volatile Demo

    博客分类:
  • java
 
阅读更多
class VolatileExample {
    volatile int x = 0;
     int b = 0;

     public void write() {
        x = 5;
        b = 1;
    }
   
    /**
     *  
     *   加上 volatile 栈中变量会无效,每次读取主存变量。
     *  不加volatile 每次读取的是栈中变量   
     */

    public void read() {
        //int dummy = b;
        while (x != 5) {
        }
    }

    public static void main(String[] args) throws Exception {
        final VolatileExample example = new VolatileExample();
        Thread thread1 = new Thread(new Runnable() {
            public void run() {
                example.write();
            }
        });
        Thread thread2 = new Thread(new Runnable() {
            public void run() {
                example.read();
            }
        });
        thread2.start();
        Thread.sleep(1000);
        thread1.start();
       
    }
}

 

 

http://ifeve.com/how-to-use-volatile/

分享到:
评论

相关推荐

    java并发实战pdf及demo源码

    线程同步是Java并发编程中的重要组成部分,包括 synchronized 关键字的使用,它可以保证同一时间只有一个线程执行特定代码块。此外,Java还提供了显式的锁机制,如 ReentrantLock,它提供了比synchronized更灵活的锁...

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    java_thread_demo

    Java线程是Java编程中的重要概念,它允许程序并发执行多个任务,从而提高了程序的效率和响应性。在多核处理器环境下,线程的利用能够充分利用硬件资源,使得程序能够同时处理不同的请求。本示例"java_thread_demo"很...

    Java 小例子合集 demo

    Java提供了Thread类和Runnable接口来创建和管理线程,以及synchronized关键字、volatile变量、wait()和notify()等机制来处理线程间的通信和同步。 这些Java小例子不仅有助于理解各个概念,还可以作为实际项目中的...

    实战Java高并发程序设计-随书代码

    《实战Java高并发程序设计》是一本专注于Java并发编程实践的书籍,随书代码提供了大量示例,帮助读者深入理解并掌握在实际开发中如何处理高并发场景下的问题。本书的核心知识点涵盖了Java并发编程的基础理论、核心...

    JAVA多线程模式高清版+DEMO

    Java多线程是Java编程中的一个核心概念,...这些内容对于提升Java并发编程能力非常有帮助,对于开发高并发、高性能的Java应用是必不可少的基础。通过实践DEMO,可以更好地理解和运用所学知识,加深对Java多线程的理解。

    多线程并发的demo

    "多线程并发的demo"这个标题暗示我们将探讨如何在实际应用中实现这一技术。 描述中提到,"此例子,在web项目一启动之后,配置的线程能定时的执行",这通常涉及到后台任务调度。在Web应用程序中,我们可能会创建一个...

    java_concurrency_in_practice:《Java并发编程实战》学习Demo

    《Java并发编程实战》是Java开发者必读的经典书籍之一,主要涵盖了Java平台上的并发和多线程编程。这本书深入探讨了如何有效地利用多核处理器,提高程序性能,并避免并发编程中的常见陷阱。以下是对该书核心知识点的...

    黑马Java八股文面试题视频教程,Java面试八股文宝典(含阿里、腾迅大厂java面试真题,java数据结构,java并发,jv

    再者,Java并发编程是现代软件开发中的重要一环。Java提供了丰富的并发工具,如synchronized关键字、volatile变量、ThreadLocal、ExecutorService、Semaphore、CyclicBarrier等。理解线程安全、死锁、活锁、饥饿等...

    java synchronized demo

    在Java编程语言中,`...总结,`java synchronized demo`是一个关于如何在Java中使用`synchronized`关键字进行线程同步的示例,通过理解和实践这个例子,开发者可以更好地掌握多线程环境下数据安全和同步的重要性。

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

    Java并发编程中,AtomicIntegerFieldUpdater 是一个非常重要的工具类,它是Java并发包(concurrent.atomic)下的一个原子更新器,主要用于确保对某个实例对象中的int类型字段进行原子操作。这个类的设计目的是在不改变...

    并发编程一之synchronized和volatile.rar

    在并发编程领域,正确理解和使用同步机制至关重要,其中`synchronized`和`volatile`是Java中两个关键的并发控制工具。本资源"并发编程一之synchronized和volatile.rar"提供了多个示例代码(demo1到demo12),帮助...

    java线程实例 各种小Demo

    在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台服务。 一、线程的创建方式 Java提供了多种创建线程的方式: 1. 继承Thread类:创建一个新的类,继承...

    java线程安全以及生产者消费者demo

    Java线程安全与生产者消费者模型是多线程编程中的两个重要概念,它们在并发处理中扮演着关键角色。在Java中,线程安全是指一个类或者方法在多线程环境下能够正确地处理数据,避免数据的不一致性或竞态条件。而生产者...

    多线程demo/java多线程练习

    本项目"多线程demo/java多线程练习"旨在通过实际操作来深入理解和掌握多线程技术,同时模拟数据库操作,这在现代应用程序开发中至关重要。 1. **线程基础** - **创建线程**:Java提供了两种创建线程的方式,分别是...

    RPC ,concurrent ,demo

    Java并发库提供了丰富的工具来处理多线程环境中的问题,如线程池(ExecutorService)、同步容器(如Vector、HashTable)、并发容器(如ConcurrentHashMap、BlockingQueue)以及各种同步原语(如synchronized、...

    Java修饰符demo

    在Java编程语言中,修饰符是用来限制或指定类、接口、方法、变量等的访问权限和性质的关键字。本文将深入探讨Java修饰符的基础知识,包括访问修饰符、非访问修饰符以及它们在实际编程中的应用。 首先,我们来看访问...

    击穿单例模式的Demo示范代码

    在Java中,如果类加载器实例化类的时机不同,可能在`getInstance()`同步之前就已经创建了多个实例。这就是所谓的“双检锁/双重检查锁定”(Double-Check Locking)问题。为解决这个问题,可以采用`volatile`关键字:...

    狂神说Java-多线程课程全部代码.rar

    总之,《狂神说Java-多线程课程全部代码》这个资源提供了丰富的多线程和并发编程实例,对于希望提升Java并发编程技能的开发者来说是一份宝贵的参考资料。通过学习和实践其中的代码,你将能够更好地理解和掌握Java多...

    GUI-and-Thread-JAVA.zip_GUI,Java,

    线程同步是多线程编程中的重要概念,包括了synchronized关键字、wait()、notify()和notifyAll()方法,以及volatile关键字和java.util.concurrent包中的工具,如Semaphore、CyclicBarrier和CountDownLatch等。DEMO_...

Global site tag (gtag.js) - Google Analytics