黑马程序员技术交流社区

标题: 关于线程池的问题 [打印本页]

作者: 黑马张健    时间: 2012-5-27 13:05
标题: 关于线程池的问题
  //创建线程池模拟普通客户来取号
   Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
     new Runnable(){
      public void run(){
       Integer number = NumberMachine.getInstance().getCommonManager().generateNewManager();
       System.out.println(number+"号普通客户正在等待服务……");
      }
     },
     0,
    Constants.COMMON_CUSTOMER_INTERVAL_TIME,
    TimeUnit.SECONDS);
   //创建线程池模拟快速客户来取号
   Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
     new Runnable(){
      public void run(){
       Integer number = NumberMachine.getInstance().getExpressManager().generateNewManager();
       System.out.println(number+"号快速客户正在等待服务……");
      }
     },
     0,
    Constants.COMMON_CUSTOMER_INTERVAL_TIME * 2,
    TimeUnit.SECONDS);
   //创建线程池模拟VIP客户来取号
   Executors.newScheduledThreadPool(1).scheduleAtFixedRate(
     new Runnable(){
      public void run(){
       Integer number = NumberMachine.getInstance().getVipManager().generateNewManager();
       System.out.println(number+"号VIP客户正在等待服务……");
      }
     },
     0,
    Constants.COMMON_CUSTOMER_INTERVAL_TIME * 6,
    TimeUnit.SECONDS);

本人对线程池的理解有些模糊,求高手讲一讲线程池的原理,以及线程池 Executors.newScheduledThreadPool(1).scheduleAtFixedRate()  常用的语法、参数代表什么意思和常用的几种方式。 谢谢!
     
作者: 黑马11期李项京    时间: 2012-5-27 13:55
常用线程池:一、线程池,newFixedThreadPool:Executors.newScheduledThreadPool(arg0;参数arg0表示开启几个线程
二、单任务线程池,newSingleThreadExecutor:ExecutorService pool = Executors.newSingleThreadExecutor();表示开启1个线程
三、可变尺寸的线程池,newCachedThreadPool:ExecutorService pool = Executors.newCachedThreadPool(); 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程。
常用方法:timer.execute(command);
        timer.scheduleAtFixedRate(command, initialDelay, period, unit);
command:线程执行命令,initialDelay:延迟多长时间后执行,period:周期,多久执行一次;unit:时间单位




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2