实现线程内的共享数据,线程共享数据,package cn.i
分享于 点击 21919 次 点评:21
实现线程内的共享数据,线程共享数据,package cn.i
package cn.itcast.gz;import java.util.Random;public class ThreadLocalTest2 { public static void main(String[] args) { for(int i = 0;i<2;i++) { new Thread(){ @Override public void run() { int value = new Random().nextInt(100); System.out.println(Thread.currentThread().getName() +"has put "+value); MyThreadLocalData.getThreadLocalInstance().setName("xiaoming"+value); MyThreadLocalData.getThreadLocalInstance().setAge(value); new A(); new B(); } }.start(); } } static class A { public A() { String name = MyThreadLocalData.getThreadLocalInstance().getName(); Integer age = MyThreadLocalData.getThreadLocalInstance().getAge(); System.out.println(Thread.currentThread().getName()+"name: "+name+" age: "+age); } } static class B { public B() { String name = MyThreadLocalData.getThreadLocalInstance().getName(); Integer age = MyThreadLocalData.getThreadLocalInstance().getAge(); System.out.println(Thread.currentThread().getName()+"name: "+name+" age: "+age); } }}class MyThreadLocalData{ private MyThreadLocalData(){} private static ThreadLocal<MyThreadLocalData> data = new ThreadLocal<MyThreadLocalData>(); public static MyThreadLocalData getThreadLocalInstance() { MyThreadLocalData instance = data.get(); if(instance==null) { instance = new MyThreadLocalData(); data.set(instance); } return instance; } private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }//该片段来自于http://byrx.net
用户点评