首页 > 代码库 > jdk src 学习 Threadlocal

jdk src 学习 Threadlocal

 示例:

import java.io.Serializable;public class TestThreadLocal implements Serializable {    /**     *      */    private static final long serialVersionUID = -1279921928557717157L;    int age;    public static void main(String[] argv) throws Exception {        TestThreadLocal tt = new TestThreadLocal();        Testthread t1 = new Testthread(tt);        Testthread t2 = new Testthread(tt);        Testthread t3 = new Testthread(tt);        t1.start();        t2.start();        t3.start();    }     static int ii = 0;//    static Integer ii = 0;    // public Integer getIi() {// 这个方式不行    // ii ++;    // return ii;    // }    public Integer getIi() {        // tl.set( ii ++ ); // 这个方式也不行, 必须要下面的方式。        tl.set(tl.get() + 1);        return tl.get();    }    /**     * { } 内部的初始化是必须的。  否则出现 nullpointexception      */    ThreadLocal<Integer> tl = new ThreadLocal<Integer>() {        protected Integer initialValue() {            ii = 0;            return ii;        };    };}class Testthread extends Thread {    TestThreadLocal ttl;    public Testthread(TestThreadLocal ttl) {        this.ttl = ttl;    }    @Override    public void run() {        String name2 = Thread.currentThread().getName();        for (int i = 0; i < 3; i++) {            System.out.println(" name " + name2 + ttl.getIi());        }    }}

 

ThreadLocal 的作用在于,将某些变量绑定到线程中去, 提供一种,线程安全的方式操作某些变量。

jdk src 学习 Threadlocal