黑马程序员技术交流社区
标题:
关于接口的疑问
[打印本页]
作者:
张子凯
时间:
2013-5-7 08:04
标题:
关于接口的疑问
本帖最后由 张子凯 于 2013-5-7 08:53 编辑
package com.isoftstone.interview.traffic;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class LampController {
private Lamp currentLamp;
public LampController(){
//刚开始让由南向北的灯变绿;
currentLamp = Lamp.S2N;
currentLamp.light();
/*每隔10秒将当前绿灯变为红灯,并让下一个方向的灯变绿*/
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(
new Runnable(){
public void run(){
System.out.println("来啊");
currentLamp = currentLamp.blackOut();
}
},
10,
10,
TimeUnit.SECONDS);
}
}
复制代码
这段代码是张孝祥老师的交通灯中的,
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);这段代码我又点疑问。ScheduledExecutorService 跟Executors都是接口,也就是说内部的成员函数都没实现,为什么可以调用呢?
作者:
郑雪
时间:
2013-5-7 08:18
楼主理解错了,Executors并不是一个借口,而是一个类,该类中有一个静态方法:public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
返回值是一个 ScheduledExecutorService接口的子类对象,这里是接口引用指向子类对象,就用到了多态。
作者:
一直在路上
时间:
2013-5-7 08:37
二楼说的很好啊,java.util.concurrent
Executors是一个类,不是接口 ,public class Executorsextends Object
其中的静态方法 static ScheduledExecutorService
newSingleThreadScheduledExecutor()
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
这些东西看看API就明白了
作者:
张子凯
时间:
2013-5-7 08:53
郑雪 发表于 2013-5-7 08:18
楼主理解错了,Executors并不是一个借口,而是一个类,该类中有一个静态方法:public static ScheduledExec ...
记错了。。。记成Executor了,扫瑞啊。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2