天天看点

ThreadLocal的简单例子

ThreadLocal的简单例子,书上抄来的,备忘下,呵呵!

package com.bbwl.threadlocal;

public class SequenceNumber {

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

  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(){

   for(int i=0;i<3;i++){

    System.out.println("thread["+Thread.currentThread().getName()

      +"]sn["+sn.getNextNum()+"]");

   }

  }

 }

}

Running results:

thread[Thread-0]sn[1]

thread[Thread-2]sn[1]

thread[Thread-1]sn[1]

thread[Thread-2]sn[2]

thread[Thread-0]sn[2]

thread[Thread-2]sn[3]

thread[Thread-1]sn[2]

thread[Thread-1]sn[3]

thread[Thread-0]sn[3]