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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张子凯 中级黑马   /  2013-5-7 08:04  /  1619 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张子凯 于 2013-5-7 08:53 编辑
  1. package com.isoftstone.interview.traffic;

  2. import java.util.concurrent.Executors;
  3. import java.util.concurrent.ScheduledExecutorService;
  4. import java.util.concurrent.TimeUnit;

  5. public class LampController {
  6.         private Lamp currentLamp;
  7.         
  8.         public LampController(){
  9.                 //刚开始让由南向北的灯变绿;               
  10.                 currentLamp = Lamp.S2N;
  11.                 currentLamp.light();
  12.                
  13.                 /*每隔10秒将当前绿灯变为红灯,并让下一个方向的灯变绿*/               
  14.                 ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);
  15.                 timer.scheduleAtFixedRate(
  16.                                 new Runnable(){
  17.                                         public  void run(){
  18.                                                 System.out.println("来啊");
  19.                                                 currentLamp = currentLamp.blackOut();
  20.                                 }
  21.                                 },
  22.                                 10,
  23.                                 10,
  24.                                 TimeUnit.SECONDS);
  25.         }
  26. }
复制代码
这段代码是张孝祥老师的交通灯中的,
ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);这段代码我又点疑问。ScheduledExecutorService 跟Executors都是接口,也就是说内部的成员函数都没实现,为什么可以调用呢?

3 个回复

倒序浏览
楼主理解错了,Executors并不是一个借口,而是一个类,该类中有一个静态方法:public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
返回值是一个 ScheduledExecutorService接口的子类对象,这里是接口引用指向子类对象,就用到了多态。
回复 使用道具 举报
二楼说的很好啊,java.util.concurrent
Executors是一个类,不是接口 ,public class Executorsextends Object
其中的静态方法  static ScheduledExecutorService

newSingleThreadScheduledExecutor()
          创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。

这些东西看看API就明白了
回复 使用道具 举报
郑雪 发表于 2013-5-7 08:18
楼主理解错了,Executors并不是一个借口,而是一个类,该类中有一个静态方法:public static ScheduledExec ...

记错了。。。记成Executor了,扫瑞啊。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马