您的位置:首页 > 编程语言

多线程编程1.2-----Map封装各线程独享数据

2014-09-01 14:52 253 查看
package zhu;

/**

* 需求:

* 为保证同一个线程调用的函数所使用的资源相同

* 也就是 线程独享自己的数据 比如:银行转账 同一线程内共享连接,不同线程独立连接

*方案:

* 使用map集合封装 线程的变量 和 线程对应的名字

* 可以使用ThreadLocal类解决

*/

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

public class ThreadScopeShareData {

private static int data=0;

private static Map<Thread,Integer> map = new HashMap<>();//map集合相当于 一个线程对应一个数据

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();

map.put(Thread.currentThread(), data);

System.out.println(Thread.currentThread().getName()+" get data:"+data);

new A().getData();

new B().getData();

}

}

).start();

}

static class A{

void getData(){

int data = map.get(Thread.currentThread());

System.out.println("A from"+Thread.currentThread().getName()+" get data:"+data);

}

}

static class B{

void getData(){

int data = map.get(Thread.currentThread());

System.out.println("B from"+Thread.currentThread().getName()+" get data:"+data);

}

}

static class C{

void getData(){

System.out.println("C from"+Thread.currentThread().getName()+" get data:"+data);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: