簡述: java
ThreadLocal, 每一個線程獨立維護的局部變量 dom
代碼: 測試
ThreadLocalDemo.java spa
- 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 .net
- 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());
- }
- }
輸出: 線程