什么是ThreadLocal?如何正确使用ThreadLocal? |
您所在的位置:网站首页 › threadlocal例子 › 什么是ThreadLocal?如何正确使用ThreadLocal? |
多个线程同时读写同一个共享变量会造成并发问题,一种解决方案就是避免变量共享。我们可以使用线程封闭技术,即使用局部变量,每个线程都有各自的调用栈,局部变量就存在栈帧中,不会与其他线程共享。我们还可以使用线程本地存储ThreadLocal。 如何使用 ThreadLocal下面这段代码会为每个线程分配一个唯一的线程Id,同一个线程每次调用 get() 获得的 Id 是一样的,不同的线程调用 get() 获得的 Id 是不一样的。 static class ThreadId { static final AtomicLong nextId = new AtomicLong(0); //定义ThreadLocal变量 static final ThreadLocal tl= ThreadLocal.withInitial(()->nextId.getAndIncrement()); //此方法会为每个线程分配一个唯一的Id static long get(){ return tl.get(); } }ThreadLocal 中除了构造方法还有 4 个公共的方法: get():返回此线程局部变量当前副本中的值 remove():移除此线程局部变量当前副本中的值 set(T value):将线程局部变量当前副本中的值设置为指定值 withInitial(Supplier |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |