ThreadLocal 변수

1343 단어 threadLocal
/**
 * ThreadLocal                            。 
 * ThreadLocal                 ,                 。
 */
public class SequenceNumber {
    
    //①         ThreadLocal initialValue()  ,     
	private static ThreadLocal<Integer> seqNum = new ThreadLocal<Integer>(){
		public Integer initialValue(){
			return 0;
		}
	};
 
    //②        
	public int getNextNum(){
		seqNum.set(seqNum.get()+1);
		return seqNum.get();
	}

	public static void main(String[ ] args) {
	     SequenceNumber sn = new SequenceNumber();
	     //③ 3     sn,       
	     TestClient t1 = new TestClient(sn);  
	     TestClient t2 = new TestClient(sn);
	     TestClient t3 = new TestClient(sn);
	     t1.start();
	     t2.start();
	     t3.start();
	}	
	private static class TestClient extends Thread{
		private SequenceNumber sn;
		public TestClient(SequenceNumber sn) {
			this.sn = sn;
		}
		public void run(){
	        //④      3    
			for (int i = 0; i < 3; i++) {
				System.out.println("thread["+Thread.currentThread().getName()+"] sn["+sn.getNextNum()+"]");
			}
		}
	}
}

좋은 웹페이지 즐겨찾기