zoukankan      html  css  js  c++  java
  • 多线程-ThreadLocal的使用

    ThreadLocal: 每个线程只能修改本线程在ThreadLocal中的值,各个线程之间互不干扰。

    /**
     * ThreadLocal线程局部变量
     *
     * ThreadLocal是使用空间换时间,synchronized是使用时间换空间
     * 比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用
     *
     * 运行下面的程序,理解ThreadLocal
     * 
     * @author 马士兵
     */
    package yxxy.c_022;
    
    import java.util.concurrent.TimeUnit;
    
    public class ThreadLocal2 {
    	//volatile static Person p = new Person();
    	static ThreadLocal<Person> tl = new ThreadLocal<>();
    	
    	public static void main(String[] args) {
    				
    		new Thread(()->{
    			try {
    				TimeUnit.SECONDS.sleep(2);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			
    			System.out.println(tl.get());// 输出null
    		}).start();
    		
    		new Thread(()->{
    			try {
    				TimeUnit.SECONDS.sleep(1);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			tl.set(new Person());
    		}).start(); 
    	}
    	
    	static class Person {
    		String name = "zhangsan";
    	}
    }
    
  • 相关阅读:
    求助
    第五次作业
    第四次作业
    第三次作业
    第二次作业(四则运算)
    关于软件工程相关疑问
    小组成员名单()
    第四次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/wanthune/p/12943628.html
Copyright © 2011-2022 走看看