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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2013-7-30 14:03  /  992 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-31 23:12 编辑

public enum Lamp {
  
S2N,S2W,E2W,E2S,

N2S,N2E,W2E,W2N,

S2E,E2N,N2W,W2S;
这是一个枚举类,我想问一下,这个{}里面的内容是枚举所产生的都是对象吧,准确的说,是Lamp的对象吧,可以用这些枚举出来的对象,调用Lamp里面的方法,也就是对象名.方法名,例如:S2N.方法名。对吧?
ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);
  timer.scheduleAtFixedRate(
    new Runnable(){
     public void run(){
      if(vechicles.size()>0){
       boolean lighted = Lamp.valueOf(Road.this.name).isLighted();
       if(lighted){
        System.out.println(vechicles.remove(0) + " is traversing !");
       }
      }
      
     }
    },
    1,
    1,
    TimeUnit.SECONDS);
查了下API文档,第二个参数说的是首次执行的延迟的时间,也就是说线程启动后,第一次能过这个时间延迟后,再通过第三个参数,也就是连续执行之间的周期,这就是说这是个周期性运转的线程?第四个指的是参数的时间单位,second指的就是秒吧?我这要理解正确吧,求大家给点意见。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

2 个回复

倒序浏览
枚举本身就是一种特殊的类,所有的枚举类型默认继承自java.lang.Enum类;
枚举常量必须写在枚举类内部代码的第一行,每一个枚举常量就代表用该枚举类型建立的一个对象;
所以,枚举常量可以直接调用从Enum继承过来的方法和在枚举类内部自己定义的方法;
枚举类型的构造方法都是私有的,在枚举类型外部不能再新建对象,我们只能使用枚举类内部已经定义好的常量;

Executors.newScheduledThreadPool(1);创建调度线程池,线程池内部只有1个线程,
scheduleAtFixedRate:该方法有四个参数:第一个参数是线程要执行的代码,就是Runnable接口的实现类对象,我们通常用匿名内部类的形式;
第二个参数是调用方法后多久之后第一次执行Runnable接口内部的run方法;
第三个参数是第一次执行后,以后每隔多久再次执行run方法;
第四个参数是时间单位;

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
没问题 hennice
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马