ThreadLocal使用

简述:

ThreadLocal, 每个线程独立维护的局部变量


代码:

ThreadLocalDemo.java

package com.anialy.test.concurrency.threadlocal;

import java.util.UUID;

public class ThreadLocalDemo implements Runnable {

	// 线程共享的对象
	private static final ThreadLocal<User> threadLocal = new ThreadLocal<User>();
	
	public void run() {
		instantiateUser();
		printUserInThreadLocal();
	}

	private void printUserInThreadLocal() {
		User user = (User)threadLocal.get();
		if(user != null)
			System.out.printf("User %s\n", user.userId);
	}

	private void instantiateUser() {
		User user = (User)threadLocal.get();
		if(user == null){
			user = new User();
			threadLocal.set(user);
		}
	}

	public class User {
		String userId;
		public User(){
			userId = UUID.randomUUID().toString();
		}
	}
}

测试:

Test.java

package com.anialy.test.concurrency.threadlocal;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
	public static void main(String[] args) {
		final int threadSize = 10;
		ExecutorService execService = Executors.newFixedThreadPool(threadSize);
		for(int i=0; i<threadSize; i++)
			execService.execute(new ThreadLocalDemo());
	}
}


输出:
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值