ThreadLocal

来源:互联网 发布:手机淘宝官方下载 编辑:程序博客网 时间:2024/06/11 07:20

ThreadLocal

MyThread:

package com.itheima.threadlocal;public class MyThread extends Thread{private ThreadLocal tl;public MyThread(ThreadLocal tl) {this.tl = tl;}@Overridepublic void run() {System.out.println(tl.get()+"aaaaaaaaaaaa");  }}
TestThreadLocal:

package com.itheima.threadlocal;public class TestThreadLocal {public static void main(String[] args) {ThreadLocal tl = new ThreadLocal(); //当前线程tl.set("p");MyThread mt = new MyThread(tl); //开启了一个新的线程mt.start();System.out.println(tl.get());  //取不出来}}
模拟ThreadLocal的设计:
public class ThreadLocal{private Map<Runnable,Object> container = new HashMap<Runnable,Object>();public void set(Object value){container.put(Thread.currentThread(),value);//用当前线程作为key}public Object get(){return container.get(Thread.currentThread());}public void remove(){container.remove(Thread.currentThread());}}
总结:调用该类的get方法,永远返回当前线程放入的数据。线程局部变量
把当前线程的东西存入ThreadLocal中,其他线程就访问不到,保证线程安全

0 0
原创粉丝点击