zoukankan      html  css  js  c++  java
  • threadLocal测试用例,说明线程本地私有

    package thread.test;
    
    public class ThreadLocalDemo {
    	/**
    	 * ThreadLocal变量,每个线程都有一个副本,互不干扰
    	 */
    	private static final ThreadLocal<String> THREAD_LOCAL = new ThreadLocal<>();
    
    	public static void main(String[] args) throws Exception {
    		new ThreadLocalDemo().threadLocalTest();
    	}
    
    	public void threadLocalTest() throws Exception {
    		// 主线程设置值
    		THREAD_LOCAL.set("1");
    		String v = THREAD_LOCAL.get();
    		System.out.println("Thread-0线程执行之前," + Thread.currentThread().getName() + "线程取到的值:" + v);
    
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				String v = THREAD_LOCAL.get();
    				System.out.println(Thread.currentThread().getName() + "线程取到的值:" + v);
    				// 设置 threadLocal(这也说明了每个线程都有一个threadLocal)
    				THREAD_LOCAL.set("2");
    				v = THREAD_LOCAL.get();
    				System.out.println("重新设置之后," + Thread.currentThread().getName() + "线程取到的值为:" + v);
    				System.out.println(Thread.currentThread().getName() + "线程执行结束");
    			}
    		}).start();
    		// 等待所有线程执行结束
    		Thread.sleep(3000L);
    		// main线程重新取,取到的是自己线程私有的本地线程私有变量
    		v = THREAD_LOCAL.get();
    		System.out.println("Thread-0线程执行之后," + Thread.currentThread().getName() + "线程取到的值:" + v);
    	}
    }
    

      

  • 相关阅读:
    [转载]数据类型和Json格式 Joe
    为页面去掉下划线
    基于Spring,struts,hibernate的JYazd仿yazd及jivejdon
    tomcat下建立虚拟目录
    用例建模指南
    王老师好,学生请教个设计上的问题
    博客第一个处女作,顺便测试一下
    自定义可以和with一起工作的类
    boost cpu_timer
    静态初始化的相依性
  • 原文地址:https://www.cnblogs.com/dashenaichicha/p/12716766.html
Copyright © 2011-2022 走看看