• ThreadLocal学习


    package test;
    
    public class Student {
    
    	private int age;
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    }
    

      

    package test;
    
    public class StudentUtil {
    
    	private static ThreadLocal<Student> studentThreadLocal = new ThreadLocal<Student>();
    
    	public static Student getStudent() {
    		Student student = studentThreadLocal.get();
    		if (student == null) {
    			student = new Student();
    			studentThreadLocal.set(student);
    		}
    		return student;
    	}
    
    }
    

     

    package test;
    
    import java.util.Random;
    
    public class ThreadLocalTest implements Runnable {
    
    	@Override
    	public void run() {
    		String threadName = Thread.currentThread().getName();
    		System.err.println(threadName + " is running");
    		int age = new Random().nextInt(100);
    		System.err.println(threadName + " set age:" + age);
    		Student student = StudentUtil.getStudent();
    		student.setAge(age);
    		System.out.println(threadName + " is first get age: " + student.getAge());
    		try {
    			Thread.sleep(10000);
    		} catch (InterruptedException e) {
    
    		}
    		System.out.println(threadName + " is second get age: " + student.getAge());
    
    	}
    
    }
    

      

    package test;
    
    public class Main {
    
    	public static void main(String[] args) {
    		for (int i = 0; i < 5; i++) {
    			new Thread(new ThreadLocalTest()).start();
    		}
    	}
    
    }
    

      

    运行结果

  • 相关阅读:
    meanshift聚类的实现
    birch聚类算法
    DBSCAN聚类算法的实现
    discrete adaboost的C++实现
    kd-tree的实现
    红黑树的实现——插入
    24位位图转8位灰度图
    将RGB数据写入BMP位图文件
    splay树的实现
    AVL树的实现
  • 原文地址:https://www.cnblogs.com/zcs201093189/p/8185222.html
Copyright © 2020-2023  润新知