Java日常笔记

来源:互联网 发布:mysql三表联查 编辑:程序博客网 时间:2024/05/16 09:32

计时器Timer工具类使用注意事项

  1. 调用schedule()方法时需要考虑线程任务调度,当唤醒TimerTask时,由于执行的确切时机取决于JVM调度策略和当前还有多 少线程等待CPU处理,因此不能保证指定时间内执行,如果一个时间任务执行的时间比较长,大量线程等待执行,那么执行其他任务会受到影响,是固定延迟调度,执行任务中的每一个延迟会传播到后续的任务执行。
  2. 调用scheduleAsFixedRate()是理论计算出下次需要调度的时间用以排序,是用固定比率调度,使用三个参数来指定task每隔x秒执行一次。

    • schedule(TimerTask task, long delay, long period)
    • schedule(TimerTask task, Date time, long period)
    • scheduleAtFixedRate(TimerTask task, long delay, long period)
    • scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

    • 使用两个参数可以指定task多少秒后执行任务一次(时间为long类型)或是指定当前任务的执行时间(时间为Date类型)

    • 注意:利用timer执行任务结束后,要调用timer.cancle()方法,避免下次重新启动timer时出现计时不准确的错误。

Java中= 与 == 的区别

  • = 是赋值运算符,将常量、变量或表达式的值赋给某一个变量。
  • == 是比较运算符,返回的值为ture或false,常见有 == >= <= > < !=

Java局部内部类和匿名内部类的特点和作用

  1. 成员内部类:即作为一个外部类的成员所在,与外部类的属性方法并列,内部类中不可定义静态变量,可以访问外部类所有成员。

    • 外部类的变量如果和内部类的变量没有同名的,则可以直接使用变量名访问外部类变量
    • 在内部类中访问自己的内部类中的变量直接使用变量名
    • 也可以使用“th is.变量名”来访问内部类变量
    • 访问外部类与内部类同名的实例变量可用“外部类名.this.变量名”
    • 外部类可以访问内部类中的方法

    优点:内部类作为外部类的成员,可以访问外部类私有的属性和方法

  2. 局部内部类:即方法中定义内部类,与局部变量相似,在局部内部类前不加修饰符public和private,范围是定义的代码块。

    • 如果内部类没有与外部类同名的变量,在内部类中可以直接访问外部类的实例变量
    • 可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的
    • 用”this.变量名” 访问的也是内部类变量
    • 用外部”外部类类名.this.变量名” 访问的是外部类变量
    • 访问局部内部类必须先有外部类对象

    注意:局部内部类中不可定义静态变量,可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的。

  3. 静态内部类:即用static修饰的成员内部类

    • 静态内部类只能访问外部类的静态成员包括静态变量和静态方法。
    • 静态内部类不能访问外部类的非静态成员包括非静态变量和非静态方法。
    • 外部类访问内部类的静态成员:内部类.静态成员。
    • 外部类访问内部类的非静态成员:实例化内部类即可。

    注意:静态内部类中可以定义静态成员或非静态成员

0 0
原创粉丝点击