为了此时保证多个线程可以在自己操作的时候有一个自己的空间,所以应该在保存有当前的线程对象,这样的类实际上就凑成了ThreadLocal类,这个类主要使用如下方法:
public void set(T value) | 普通 | 设置传输数据 |
public T get() | 普通 | 取得传输数据 |
public void remove() | 普通 | 删除数据 |
保存每个线程的独立数据。
代码实现:
1 package cn.demo; 2 class Message{ 3 private String title; 4 public void setTitle(String title){ 5 this.title = title; 6 } 7 public String getTitle(){ 8 return title; 9 } 10 } 11 class Demo { 12 public void fun(){ 13 Message msg = MyTran.get(); 14 System.out.println(msg.getTitle()); 15 } 16 } 17 class MyTran{ 18 private static ThreadLocal<Message> threadlocal = new ThreadLocal<Message>(); 19 public static void set(Message msg){ 20 threadlocal.set(msg); 21 } 22 public static Message get(){ 23 return threadlocal.get(); 24 } 25 } 26 public class Test { 27 public static void main(String[] args) { 28 new Thread(new Runnable(){ 29 public void run(){ 30 Message msg = new Message(); 31 msg.setTitle("我们好累啊"); 32 MyTran.set(msg); 33 new Demo().fun(); 34 } 35 }).start(); 36 Message msg = new Message(); 37 msg.setTitle("www.i.cnblogs/liyang31.com"); 38 MyTran.set(msg); 39 new Demo().fun(); 40 } 41 }
结果:
我们好累啊
www.i.cnblogs/liyang31.com
总结:利用ThreadLocal可以在多线程的开发环境之中,准确的在本线程对象操作时保存或取得所需要的一个对象内容。