thread_threadLocal(多线程共享数据)
来源:互联网 发布:如何用python写爬虫 编辑:程序博客网 时间:2024/05/17 07:14
package com.gzhs.zsd.thread;
import java.util.Random;
/*
* ThreadLoacl应用
* @author 谢泽鹏
* @version 1.0
*/
public class Thread_ThreadLoacl {
//线程数据private static int data = 0;private static ThreadLocal<Integer> shareData = new ThreadLocal<Integer>();//private static ThreadLocal<MyThreadScopeData> myShareDatas = new ThreadLocal<MyThreadScopeData>();public static void main(String[] args) { //创建两个线程 for(int i = 0; i < 2; i++){ new Thread(new Runnable(){ @Override public void run() { data = new Random().nextInt(); System.out.println(Thread.currentThread().getName() + " has put data :" + data); //存放线程数据 //shareData.set(data); MyThreadScopeData.getThreadInstance().setAge(data); MyThreadScopeData.getThreadInstance().setName("" + data); //A模块拿数据 new A().get(); //B模块拿数据 new B().get(); } }).start(); }}//A模块static class A{ public void get(){ //获取数据
// int data = MyThreadScopeData.getThreadInstance().getAge();
// System.out.println(“B from ” + Thread.currentThread().getName() + ” get data :” + data);
MyThreadScopeData myThreadScopeData = MyThreadScopeData.getThreadInstance();
int age = myThreadScopeData.getAge();
String name = myThreadScopeData.getName();
System.out.println(“A from ” + Thread.currentThread().getName() + ” get age :” + age + ” get name ” + name);
}
}
//B模块static class B{ public void get(){ //获取数据
// int data = MyThreadScopeData.getThreadInstance().getAge();
// System.out.println(“B from ” + Thread.currentThread().getName() + ” get data :” + data);
MyThreadScopeData myThreadScopeData = MyThreadScopeData.getThreadInstance();
int age = myThreadScopeData.getAge();
String name = myThreadScopeData.getName();
System.out.println(“A from ” + Thread.currentThread().getName() + ” get age :” + age + ” get name ” + name);
}
}
}
//数据存储类
class MyThreadScopeData{
private MyThreadScopeData(){}
public static /synchronized/ MyThreadScopeData getThreadInstance(){
MyThreadScopeData instance = map.get();
if(instance == null){
instance = new MyThreadScopeData();
map.set(instance);
}
return instance;
}
//private static MyThreadScopeData instance = null;//new MyThreadScopeData();
private static ThreadLocal map = new ThreadLocal();
private String name;private int age;public String getName() { return name;}public void setName(String name) { this.name = name;}public int getAge() { return age;}public void setAge(int age) { this.age = age;}
}
- thread_threadLocal(多线程共享数据)
- thread_ShareData(多线程共享数据)
- JAVA多线程(四)多线程数据共享
- 多线程访问共享数据(1)
- 多线程访问共享数据(2)
- 多线程访问共享数据(1)
- 多线程访问共享数据(2)
- 多线程-非共享数据(python 版)
- C#多线程共享数据
- C#多线程共享数据
- C#多线程共享数据
- perl 多线程共享数据
- 多线程共享数据
- 多线程共享数据案例
- 多线程中的数据共享
- 多线程五共享数据
- C#多线程共享数据
- 多线程数据共享
- private最常见的应用:
- java插入图片的方法
- HDU1698 Just a Hook 线段树入门题复习
- 容器
- 关于新建项目多出的v7包
- thread_threadLocal(多线程共享数据)
- Prototype.js的使用手册
- Multi-thread下对int进行原子操作
- 数据挖掘Apriori算法
- git基础入门
- 1003. 我要通过!(20)-浙大PAT乙级真题
- Angualr__directive
- 2016 Multi-University Training Contest 2 1009 It's All In The Mind (贪心)
- 链表去重2