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();
        }
    }
  • 相关阅读:
    面向对象三大特征------多态
    接口的概念
    面向对象(抽象类)
    面向对象三大特征------继承
    面向对象三大特征------封装
    成员变量和局部变量的区别
    20180822 ajax post 方式请求
    20180815 权限
    20180815 视图
    20180814 夜晚小目标
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3754234.html
Copyright © 2011-2022 走看看