首页 > 其他 > 详细

ThreadLocal学习

时间:2018-01-03 20:32:34      阅读:218      评论:0      收藏:0      [点我收藏+]

 

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();
		}
	}

}

  

运行结果

技术分享图片

 

ThreadLocal学习

原文:https://www.cnblogs.com/zcs201093189/p/8185222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!