同一线程范围内数据共享
2016-01-16 21:22
330 查看
package com.ygl;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class ThreadScopeShareData {
private static Map<Thread,Integer> threadData=new HashMap<Thread,Integer>();
static class A{
public void getData(){
int data=threadData.get(Thread.currentThread());
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
}
}
static class B{
public void getData(){
int data=threadData.get(Thread.currentThread());
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
}
}
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:"+data);
threadData.put(Thread.currentThread(), data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
//******************************
package com.ygl;
import java.util.Random;
public class ThreadScopeShareData {
private static ThreadLocal<Integer> threadData=new ThreadLocal<Integer>();
static class A{
public void getData(){
int data=threadData.get();
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
}
}
static class B{
public void getData(){
int data=threadData.get();
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
}
}
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:"+data);
threadData.set(data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
//*********************************************************
package com.ygl;
import java.util.Random;
public class ThreadScopeShareData {
private static ThreadLocal<Integer> threadData=new ThreadLocal<Integer>();
private static ThreadLocal<MyThreadScopeData> myThreadScopeData=new ThreadLocal<MyThreadScopeData>();
static class A{
public void getData(){
int data=threadData.get();
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
MyThreadScopeData mydata=MyThreadScopeData.getThreadInstance();
System.out.println(mydata.getAge()+"===="+mydata.getName());
}
}
static class B{
public void getData(){
int data=threadData.get();
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
MyThreadScopeData mydata=MyThreadScopeData.getThreadInstance();
System.out.println(mydata.getAge()+"===="+mydata.getName());
}
}
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:"+data);
threadData.set(data);
MyThreadScopeData.getThreadInstance().setName(Thread.currentThread().getName());//与本线程相关的实例
MyThreadScopeData.getThreadInstance().setAge(data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
class MyThreadScopeData{
private static ThreadLocal<MyThreadScopeData> map=new ThreadLocal<MyThreadScopeData>();
private MyThreadScopeData(){}
public static MyThreadScopeData getThreadInstance(){
MyThreadScopeData instance=map.get();
if(instance ==null){
instance=new MyThreadScopeData();
map.set(instance);
}
return instance;
}
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;
}
}
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class ThreadScopeShareData {
private static Map<Thread,Integer> threadData=new HashMap<Thread,Integer>();
static class A{
public void getData(){
int data=threadData.get(Thread.currentThread());
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
}
}
static class B{
public void getData(){
int data=threadData.get(Thread.currentThread());
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
}
}
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:"+data);
threadData.put(Thread.currentThread(), data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
//******************************
package com.ygl;
import java.util.Random;
public class ThreadScopeShareData {
private static ThreadLocal<Integer> threadData=new ThreadLocal<Integer>();
static class A{
public void getData(){
int data=threadData.get();
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
}
}
static class B{
public void getData(){
int data=threadData.get();
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
}
}
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:"+data);
threadData.set(data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
//*********************************************************
package com.ygl;
import java.util.Random;
public class ThreadScopeShareData {
private static ThreadLocal<Integer> threadData=new ThreadLocal<Integer>();
private static ThreadLocal<MyThreadScopeData> myThreadScopeData=new ThreadLocal<MyThreadScopeData>();
static class A{
public void getData(){
int data=threadData.get();
System.out.println("A"+Thread.currentThread().getName()+"data:"+data);
MyThreadScopeData mydata=MyThreadScopeData.getThreadInstance();
System.out.println(mydata.getAge()+"===="+mydata.getName());
}
}
static class B{
public void getData(){
int data=threadData.get();
System.out.println("B"+Thread.currentThread().getName()+"data:"+data);
MyThreadScopeData mydata=MyThreadScopeData.getThreadInstance();
System.out.println(mydata.getAge()+"===="+mydata.getName());
}
}
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:"+data);
threadData.set(data);
MyThreadScopeData.getThreadInstance().setName(Thread.currentThread().getName());//与本线程相关的实例
MyThreadScopeData.getThreadInstance().setAge(data);
new A().getData();
new B().getData();
}
}).start();
}
}
}
class MyThreadScopeData{
private static ThreadLocal<MyThreadScopeData> map=new ThreadLocal<MyThreadScopeData>();
private MyThreadScopeData(){}
public static MyThreadScopeData getThreadInstance(){
MyThreadScopeData instance=map.get();
if(instance ==null){
instance=new MyThreadScopeData();
map.set(instance);
}
return instance;
}
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;
}
}
相关文章推荐
- 微信公众平台应用开发框架sophia设计不足(1)
- Index的填充属性:FillFactor 和 PAD_INDEX
- git submodule相关操作
- django views显示中文
- 蓝桥杯 c++_ch02_01
- 自定义view入门
- 强连通分量之Korasju 与tarjan两小模版题
- 表单 获取当前时间
- 自定义view入门
- Java文件解压之TGZ解压
- temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >> 1)
- 数据结构与算法——有1亿个整数,找出最大的1000个,要求时间越短越好,空间占用越少越好
- iOS - UICollectionView学习
- XML详解
- Java文件解压
- 原生js写的复选框的全选、不选、反选
- Python新手初学教程
- DEV下Scheduler Control 的部分操作
- 雅思考试(口语篇)
- JavaSE-方法的参数传递