ThreadLocal

实例

package zf.threadlocal;

import java.util.Random;

public class ThreadLocalTest02  implements Runnable{

	ThreadLocal stu = new ThreadLocal(){
		protected Student initialValue() {
			return new Student();
		};
	} ;
	
	Random r = new Random() ;
	
	@Override
	public void run() {
		int i = r.nextInt(100);
		String threadName = Thread.currentThread().getName() ;
		System.out.println(threadName + " set i " + i);
		stu.get().setId(i);
		System.out.println(threadName + "fist read i " + stu.get().getId());
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}  
		System.out.println(threadName + " second read i " + stu.get().getId());
	}
	
	public static void main(String[] args) {
		ThreadLocalTest02 tlt = 	new ThreadLocalTest02();
		new Thread(tlt).start() ;
		new Thread(tlt).start() ;
	}
	
}

class Student{
	
	private int id ;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
}


你可能感兴趣的:(线程并发,java)