zoukankan      html  css  js  c++  java
  • java多线程之ThreadLocal

    ThreadLocal为每个线程保存变量,以保证数据同步。

    package Thread.Common;
    
    import java.util.Random;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
    
    class Accessor implements Runnable {
        private final int id;
    
        public Accessor(int idn) {
            id = idn;
        }
    
        @Override
        public void run() {
            while (!Thread.currentThread().isInterrupted()) {
                ThreadLocalVariableHolder.increment();
                System.out.println(this);
                Thread.yield();
            }
        }
    
        public String toString() {
            return "#" + id + ":" + ThreadLocalVariableHolder.get();
        }
    }
    
    public class ThreadLocalVariableHolder {
        private static ThreadLocal<Integer> value = new ThreadLocal<Integer>() {
            private Random rand = new Random(47);
    
            protected synchronized Integer initialValue() {
                return rand.nextInt(10000);
            }
        };
    
        public static void increment() {
            value.set(value.get() + 1);
        }
    
        public static int get() {
            return value.get();
        }
    
        public static void main(String[] args) throws InterruptedException {
            ExecutorService exec = Executors.newCachedThreadPool();
            for (int i = 0; i < 5; i++) {
                exec.execute(new Accessor(i));
            }
            TimeUnit.SECONDS.sleep(3);
            exec.shutdown();
        }
    }
  • 相关阅读:
    UISearchBar的常用代理
    iOS 上传图片压缩大小设置
    __weak typeof(self)weakSelf = self;的解释和使用
    运动事件(MotionEvent)
    iOS 获取当前window
    保留小数
    ios 转图片
    iOS提示弹窗
    iOS 获取ip地址
    微信小程序 watch监听数据变化 类似vue中的watch
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3754234.html
Copyright © 2011-2022 走看看