---------------------- android培训、java培训、期待与您交流! ----------------------
看完交通灯的面试案例,对其中的定时器技术很感兴趣,就自己写了一个,然后试了试其中的方法作用
练习定时器技术的同时,也顺便巩固了一下内部类的应用,下面是自己做的实验:
第一个定时器,模拟倒计时
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MyTimer {
public static void main(String[] args) {
ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(new Runnable(){
public void run() {
System.out.println("倒计时开始:");
for(int i=10;i>0;i--){
System.out.println(+i);
}
System.out.println("发射!");
}
},
1,
1,
TimeUnit.SECONDS);
}
}
倒计时开始:
10
9
8
7
6
5
4
3
2
1
发射!
倒计时开始:
10
9
8
7
6
5
4
3
2
1
发射!
有一点小问题是:倒计时结束后,这个定时器还会继续执行,怎样让这个倒计时程序只执行一次呢?
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MyTimer1 {
static int account=10;
public static void main(String[] args) {
ExecutorService timer=Executors.newFixedThreadPool(1);
timer.submit(new Runnable(){
public void run() {
System.out.println("倒计时开始:");
for(;account>0;account--){
System.out.println(account);
}
System.out.println("发射!");
}
});
timer.shutdownNow();
}
}
倒计时开始:
10
9
8
7
6
5
4
3
2
1
发射!
试了试按照老师的代码实现,怎么也过不去,然后换成上面的样子才好
但是实验的过程中,也碰到了内部类访问外部类属性、访问方法局部变量的问题,最后的解决方法是把方法的局部变量设置为static
才解决
---------------------- android培训 、 java培训 、期待与您交流! ----------------------
本文通过实例探讨了Java中的定时器技术及其在模拟倒计时中的应用,同时涉及内部类的使用与访问外部类属性的问题。通过将方法的局部变量设置为静态变量解决了访问问题,并演示了如何使倒计时程序仅执行一次。
9019

被折叠的 条评论
为什么被折叠?



