A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志海 中级黑马   /  2014-1-25 11:28  /  945 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志海 于 2014-1-27 11:41 编辑

这边为什么要用到线程池呢??
  1. public class Road {
  2.         private List<String> vechicles = new ArrayList<String>();
  3.         
  4.         private String name =null;
  5.         public Road(String name){
  6.                 this.name = name;
  7.                
  8.                 //模拟车辆不断随机上路的过程               
  9.                 ExecutorService pool = Executors.newSingleThreadExecutor();
  10.                 pool.execute(new Runnable(){
  11.                         public void run(){
  12.                                 for(int i=1;i<1000;i++){
  13.                                         try {
  14.                                                 Thread.sleep((new Random().nextInt(10) + 1) * 1000);
  15.                                         } catch (InterruptedException e) {
  16.                                                 e.printStackTrace();
  17.                                         }
  18.                                         vechicles.add(Road.this.name + "_" + i);
  19.                                 }                                
  20.                         }
  21.                         
  22.                 });
复制代码


3 个回复

倒序浏览
张孝祥老师这边用的是单线程池SingleThreadExecutor ,若果不用而是直接启动的话,那就是所有车辆出发数量得不到保障,对红绿灯就不好控制了
回复 使用道具 举报
用线程池可以更好的控制线程吧。
回复 使用道具 举报
线程池是新特性,所以它的出现和使用也是对多线程的优化和让大家去使用这个特性。很多方法都封装好了,不需要自己去写和实现了,可以提高不少效率。
让别人知道自己会这个(次要,面试却必要)
使用线程池,可以写成匿名内部类,其他功能需求调用线程池方法即可,达到了代码结构紧凑易读的效果。
【都是自己的理解,没有去查询更专业的回答,请楼主判断性看】
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马