找回密码
 FreeOZ用户注册
查看: 1750|回复: 0
打印 上一主题 下一主题

JDK 1.5 Concurrent库的一个sample

[复制链接]
跳转到指定楼层
1#
发表于 3-8-2009 17:23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
刚才自己写的一个东西,混用ThreadLocal(这个是1.2的API了),java.util.concurrent.Callable/ExecutorServices/Executors,
java.util.concurrent.atomic.AtomicInteger。不过我的程序只是用来测试ThreadLocal以及Callable的用法,
没有线程控制(事实上也没有必要,因为没有共享数据)。
  1.   1 import java.util.concurrent.*;
  2.   2 import java.util.concurrent.atomic.*;
  3.   3 import static java.lang.System.*;
  4.   4
  5.   5 public class ThreadLocalTest3 {
  6.   6     private static final AtomicInteger ai = new AtomicInteger();
  7.   7
  8.   8     public static void main(String [] args) {
  9.   9         Callable<Integer> call = new Callable<Integer>(){
  10. 10             ThreadLocal<Integer> v = new ThreadLocal<Integer>() {
  11. 11                 @Override protected Integer initialValue() {
  12. 12                     return ai.getAndIncrement();
  13. 13                 }
  14. 14             };
  15. 15
  16. 16             @Override public Integer call() throws InterruptedException{
  17. 17                 int x = v.get(); //initialize thread local variable
  18. 18                 int w = (int)(Math.random() * 10000);
  19. 19                 Thread.sleep(w);
  20. 20                 out.println(x + ", " + v.get() + " : " + w);
  21. 21                 return v.get();
  22. 22             }
  23. 23         };
  24. 24
  25. 25         ExecutorService execs = Executors.newCachedThreadPool();
  26. 26         for(int k=0; k<100; k++){
  27. 27             execs.submit(call);
  28. 28         }
  29. 29         execs.shutdown();
  30. 30     }
  31. 31 }
复制代码
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 6-9-2025 17:53 , Processed in 0.028225 second(s), 17 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表