`
firkeuuuu
  • 浏览: 18651 次
社区版块
存档分类
最新评论

ThreadLocal共享变量1

    博客分类:
  • java
阅读更多
import java.util.Random;

public class ThreadLocalTest {
    private static ThreadLocal<Integer> x = new ThreadLocal();

    public static void main(String[] args) {
        for (int i = 0; i < 2; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    int data = new Random().nextInt();
                    System.out.println(Thread.currentThread().getName() + ":" + data);
                    x.set(data);
                    new A().get();
                    new B().get();

                }
            }).start();
        }
    }

    static class A{
        public void get(){
            int data = x.get();
            System.out.println(Thread.currentThread().getName() + ":" + data);

        }
    }
    static class B{
        public void get(){
            int data = x.get();
            System.out.println(Thread.currentThread().getName() + ":" + data);
        }
    }
}

 

分享到:
评论

相关推荐

    18 线程作用域内共享变量—深入解析ThreadLocal.pdf

    【线程作用域内共享变量】 在Java并发编程中,线程安全是一个重要的主题。传统的解决方案包括使用`Atomic`类、`volatile`关键字以及`synchronized`关键字来保证多线程环境下的数据一致性。然而,这些同步机制并不...

    ThreadLocal应用示例及理解

    - ThreadLocal不是线程同步机制,不能用来解决多个线程访问共享资源的问题。 - 不要将ThreadLocal用作全局变量,否则可能导致内存泄漏。 - 使用ThreadLocal时,要特别注意线程结束后的清理工作,防止内存泄漏。 - ...

    正确理解ThreadLocal.pdf

    1. **数据库连接管理**:如上文的Hibernate示例,通过`ThreadLocal`管理每个线程的数据库连接,确保每个线程拥有独立的连接资源,避免了资源竞争。 2. **事务处理**:在事务管理中,`ThreadLocal`可以用于维护每个...

    ThreadLocal

    - 不适用于跨线程通信:ThreadLocal只保证同一线程内的数据隔离,不同线程间无法共享ThreadLocal变量。 - 不是线程安全的:尽管ThreadLocal提供了线程隔离,但它本身并不保证线程安全性,如果在`set`和`get`操作之间...

    ThreadLocal简单Demo

    **线程局部变量(ThreadLocal)** 在Java编程中,`ThreadLocal`是一个非常重要的工具类,它用于在多线程环境中提供线程安全的局部变量。`ThreadLocal`并不是一个线程,而是一个线程局部变量的容器,每个线程都有自己...

    Java并发编实践之ThreadLocal变量.doc

    Java并发编程实践中,ThreadLocal变量是一个非常重要的工具,它在JDK1.2版本就已经引入。ThreadLocal不是代表一个线程实例,而是一种线程局部变量的机制,它为每个线程提供了一个独立的变量副本,各个线程可以独立地...

    ThreadLocal相关

    当多个线程访问同一个 ThreadLocal 变量时,每个线程将拥有其自己的变量副本,而不是共享同一个变量。 ThreadLocal 的特点 1. 线程独立:ThreadLocal 变量在线程之间是独立的,每个线程都有其自己的变量副本。 2. ...

    Java中ThreadLocal的设计与使用

    静态成员变量是所有线程共享的,而ThreadLocal变量为每个线程提供独立的副本。这使得ThreadLocal适合于存储线程私有数据,如数据库连接、用户会话信息等。 ### ThreadLocal的最佳实践 1. **避免过度使用**:虽然...

    Java多线程编程之ThreadLocal线程范围内的共享变量

    总结来说,ThreadLocal是Java中用于多线程编程的一种重要工具,它通过为每个线程提供独立的变量副本,解决了共享变量带来的问题,同时在特定场景下提供了高效的数据管理和事务一致性。了解并合理利用ThreadLocal,能...

    ThreadLocal的用处

    1. **线程局部变量**: ThreadLocal并不是一个存储数据的容器,而是一个用于创建线程局部变量的模板。当你在ThreadLocal中创建一个实例时,其实每个线程都有一个与之对应的独立副本。这意味着不同线程可以同时拥有...

    ThreadLocal原理及在多层架构中的应用

    ThreadLocal不是一种数据结构,而是一种解决线程间共享数据的方式,它提供了线程安全的局部变量。** ### 1. ThreadLocal的原理 ThreadLocal的工作原理主要基于以下几点: - **内部类ThreadLocalMap**:...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    - 不要将ThreadLocal用作全局变量,因为它们只在创建它们的线程内有效,无法跨线程共享。 - 谨慎处理生命周期管理,尤其是在静态变量中使用ThreadLocal,确保在不再需要时正确清理,防止内存泄漏。 6. **应用场景...

    ThreadLocal的几种误区

    ThreadLocal是Java编程中一种非常特殊的变量类型,它主要用于在多线程环境下为每个线程提供独立的变量副本,从而避免了线程间的数据共享和冲突。然而,ThreadLocal在理解和使用过程中容易产生一些误区,这里我们将...

    ThreadLocal_ThreadLocal源码分析_

    3. **谨慎使用全局ThreadLocal**:全局的ThreadLocal变量可能导致数据在不同线程间意外共享,应谨慎使用。 4. **注意线程池中的ThreadLocal**:线程池中的线程可能会被重用,若不清理ThreadLocal,可能导致后续任务...

    Java并发编程学习之ThreadLocal源码详析

    ThreadLocal是Java并发编程中的一种机制,用于解决多线程访问共享变量的问题。它可以使每个线程对共享变量的访问都是线程安全的,使得多线程编程变得更加简单。 ThreadLocal的实现原理是基于ThreadLocalMap的, ...

    java 简单的ThreadLocal示例

    Java中的ThreadLocal是一个非常重要的工具类,它在多线程编程中扮演着独特角色,尤其在处理线程间数据隔离和共享时。ThreadLocal不是线程本身,而是为每个线程提供一个独立的变量副本,使得每个线程都可以独立地改变...

    使用ThreadLocal管理“session”数据

    ThreadLocal主要用于解决线程间的数据隔离问题,确保各线程拥有自己的变量副本,避免了数据共享带来的并发问题。在Web应用中,特别是对于"session"数据的管理,ThreadLocal可以作为一种有效的解决方案。 1. **什么...

    java中ThreadLocal详解

    通常情况下,当多个线程共享某个变量时,可能会引发线程安全问题。而`ThreadLocal`则提供了另一种思路:为每个使用该变量的线程分配独立的副本,这样一来,每个线程拥有自己的变量副本,互不影响,从而避免了线程...

Global site tag (gtag.js) - Google Analytics