package org.springside.modules.utils.concurrent;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
import org.junit.Test;
import org.springside.modules.utils.number.RandomUtil;
public class ThreadLocalContextTest {
@Test
public void test() throws InterruptedException {
final CountDownLatch countdown = ConcurrentTools.countDownLatch(10);
final CyclicBarrier barrier = ConcurrentTools.cyclicBarrier(10);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
barrier.await();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ThreadLocalContext.put("myname", Thread.currentThread().getName());
ThreadUtil.sleep(RandomUtil.nextLong(100, 300));
System.out.println(ThreadLocalContext.get("myname"));
ThreadLocalContext.reset();
System.out.println(
"shoud null for " + Thread.currentThread().getName() + ":" + ThreadLocalContext.get("myname"));
countdown.countDown();
}
};
for (int i = 0; i < 10; i++) {
Thread thread = new Thread(runnable);
thread.start();
}
countdown.await();
}
}