码迷,mamicode.com
首页 > 编程语言 > 详细

ThreadLocal线程范围内的共享变量

时间:2015-05-07 14:26:16      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

模拟ThreadLocal类实现:线程范围内的共享变量,每个线程只能访问他自己的,不能访问别的线程。
技术分享

package com.ljq.test.thread;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
 * 线程范围内的共享变量
 * 
 * 三个模块共享数据,主线程模块和AB模块
 * 
 * @author Administrator
 * 
 */
public class ThreadScopeShareData {
    // 准备共享的数据
    private static int data = 0;
    // 存放各个线程对应的数据
    private static Map<Thread, Integer> threadData = new HashMap<Thread, Integer>();

    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();
                    // 将线程信息和对应数据存储起来
                    threadData.put(Thread.currentThread(), data);
                    System.out.println(Thread.currentThread().getName() + " has put data :" + data);
                    new A().get();
                    new B().get();
                }
            }).start();
        }
    }

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

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

运行结果:

技术分享
xxx
xxx
xxxxxxx
xxx
xxx
xxx

ThreadLocal线程范围内的共享变量

标签:

原文地址:http://www.cnblogs.com/linjiqin/p/4484606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!