java-threadlocal示例

2018-08-24  本文已影响0人  一个喜欢烧砖的人

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。
废话不多说直接撸代码

public class MyTestDemo {

    ThreadLocal<Long> longLocal = new ThreadLocal<Long>();
    ThreadLocal<String> stringLocal = new ThreadLocal<String>();

    public void set() {
        longLocal.set(Thread.currentThread().getId());
        stringLocal.set(Thread.currentThread().getName());
    }

    public long getLong() {
        return longLocal.get();
    }

    public String getString() {
        return stringLocal.get();
    }


    public static void main(String[] args) throws InterruptedException {

        MyTestDemo myTestDemo = new MyTestDemo();

        myTestDemo.set();

        System.out.println(myTestDemo.getLong());
        System.out.println(myTestDemo.getString());


        Thread thread = new Thread() {
            @Override
            public void run() {
                myTestDemo.set();
                System.out.println(myTestDemo.getLong());
                System.out.println(myTestDemo.getString());
            }
        };
        thread.start();

//        thread.join();     执行此语句意味着thread的线程的东西执行完后在去执行后面的语句 里面的参数表示如果设置时间之后子线程还没有结束 则开启父线程
        System.out.println(myTestDemo.getLong());
        System.out.println(myTestDemo.getString());

    }
}

运行结果

undefined.
1
main
1
main
10
Thread-0

总结:

上一篇 下一篇

猜你喜欢

热点阅读