`

保持java线程间可见性的5种方式

    博客分类:
  • java
阅读更多
Primitive Writes up to and including… ...are made visible to…
Object the end of a synchronized block or method a thread entering a synchronized block or method for the same object.
Volatile field a write to a volatile field any thread reading that volatile field.
Thread a call to Thread.start the newly started thread.
Thread the final write made by a dying thread any thread which successfully calls Thread.join on that thread.
Final field the initialization of a final field (but only those writes affecting the field and any object it references) any thread, provided that the constructor of the object containing the field doesn’t write the value of this anywhere eventually visible to other threads


  这些在《java并发编程实践》一书中已经有详细解释,特别是对于ReentrantLock、volatile域以及final域的讨论。今天在MenTaLguY的blog上看到这张表,摘录下。
1
1
分享到:
评论

相关推荐

    java多线程Demo

    Volatile关键字可以保证线程间变量的可见性,但不能保证原子性。在多线程环境下,如果一个变量被多个线程共享且只进行读写操作,可以使用volatile保证数据的一致性。 9. sleep(), yield(), interrupt(): - sleep...

    java线程实例 各种小Demo

    Java 5引入了BlockingQueue阻塞队列,提供了一种更安全的线程间通信方式,如ArrayBlockingQueue、LinkedBlockingQueue等。 在"线程池.rar"和"线程实例"这两个文件中,你可以找到关于这些概念的具体示例代码,通过...

    Java 线程间数据交换的疑惑

    这篇博客“Java线程间数据交换的疑惑”可能探讨了在并发编程中如何有效地共享和同步数据。`volatile`关键字是Java中用于实现线程间通信的一个重要工具,它在多线程环境下起着关键的作用。 首先,我们要理解`...

    java线程深入解析

    创建Java线程有两种方式:继承`Thread`类并重写`run()`方法,或者实现`Runnable`接口并提供`run()`方法。当线程对象被创建并调用`start()`方法后,线程进入可运行态,由Java的线程调度器决定何时执行`run()`方法。 ...

    java线程入门级书籍

    `synchronized`关键字用于保证线程间的可见性和有序性。它可以修饰方法或者代码块,确保任何时候只有一个线程可以访问被锁定的对象或代码块。 ```java public synchronized void method() { // 此方法在同一时刻只...

    Java线程使用教程

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...

    java线程文档大全

    7. **线程同步**:Java提供了多种同步机制,包括synchronized关键字(锁定对象或代码块)、Lock接口(如ReentrantLock)以及volatile关键字,以确保多线程环境下数据的一致性和可见性。 8. **锁**:Java中的锁包括...

    java线程.rar

    Java线程是Java编程语言中...以上知识点覆盖了Java线程的基础概念、创建方式、状态管理、同步机制以及高级特性,是Java程序员必须掌握的重要内容。通过深入理解和熟练应用这些知识,可以编写出高效、安全的多线程程序。

    java多线程的讲解和实战

    - `volatile`关键字:用于标记共享变量,确保多线程环境下的可见性和有序性,但不保证原子性。 - `join()`方法:让当前线程等待另一个线程完成其执行。 4. **线程优先级与调度**:Java的`Thread`类提供了设置线程...

    关于线程(java)两天的课件

    volatile保证了变量在多线程环境中的可见性;Lock提供了更细粒度的控制,可以手动获取和释放锁。 此外,死锁是多线程编程中常见的问题,当两个或更多的线程互相等待对方释放资源时就会发生。避免死锁的关键在于遵循...

    Java线程 学习

    - **volatile 关键字**:用于标记可能被多个线程访问的变量,确保线程间的可见性和有序性。 - **synchronized 关键字**:用于实现对共享资源的互斥访问,防止多个线程同时修改同一个资源。 #### 七、线程安全问题 -...

    java用线程两种方式

    在Java中,创建和使用线程主要有两种方式,一种是继承Thread类,另一种是实现Runnable接口。这两种方式在使用上有一些区别,每种方式都有其特定的用法和特点。 首先,继承Thread类的方式。通过继承Thread类来创建...

    java线程与并发编程实践

    volatile关键字则用于确保变量的可见性和有序性,防止指令重排序对多线程环境造成的影响。更高级的并发控制机制如Lock接口(ReentrantLock可重入锁、ReadWriteLock读写锁)提供了比synchronized更灵活的控制,比如...

    JAVA线程学习(源代码)

    此外,Java还提供了volatile关键字,保证变量的可见性和有序性,防止线程之间的数据不一致。 Java的`java.util.concurrent`包提供了高级并发工具,如ExecutorService、Future、Semaphore(信号量)和CyclicBarrier...

    java线程安全测试

    Java线程安全是多线程编程中的一个关键概念,它涉及到多个线程访问共享资源时可能出现的问题。在Java中,线程安全问题通常与并发、内存模型和可见性有关。Java内存模型(JMM)定义了如何在多线程环境下共享数据的...

    java多线程编程总结

    用于标记可能被多个线程访问的变量,确保其可见性和禁止指令重排。这对于解决某些类型的线程安全问题非常有用。 #### 十一、Java线程:新特征 - **线程池** `ExecutorService` 和 `Executors` 提供了一种高效地...

    电子书《java线程》

    3. **线程安全**:理解volatile关键字的作用,它能确保多线程环境下的变量可见性和有序性。 4. **线程池**:ExecutorService和ThreadPoolExecutor是Java提供的线程池框架,它们可以有效管理和控制线程,提高系统...

    多线程两种实现方式Java

    - **volatile** 关键字:保证共享变量的可见性,防止线程间的数据不一致。 - **wait()** 和 **notify()** / **notifyAll()** 方法:在线程间进行通信,让等待某个条件的线程释放锁并进入等待状态,或唤醒等待的线程...

    Java多线程编程核心技术_完整版_java_

    2. Condition接口:配合Lock使用,提供更灵活的线程间通信方式。 五、线程池 1. Executor框架:Java 5引入的ExecutorService接口,它是线程池的核心,ThreadPoolExecutor是其具体实现。 2. ThreadPoolExecutor参数...

    Java多线程文档

    Java线程有三个优先级:MIN_PRIORITY(1)、NORM_PRIORITY(5)、MAX_PRIORITY(10),但优先级并不保证执行顺序,只是提供一种调度建议。 八、并发工具类 Java并发包(java.util.concurrent)提供了许多高级并发...

Global site tag (gtag.js) - Google Analytics