本文目录一览:
java代码执行顺序是怎样的
java代码执行顺序一般按照以下规则:
1.
从上往下,从左往右。
2.
如果是在
if
表达式中,且有多个表达式,中间是(并去)关联的,那么,第一个不符合,那么右边的表达式都不会去比或计算了。同理,如果是多个表达式,但用
||(或者)
关联的,那么第一个表达式符号条件的话,就直接进入if
了,右边的表达式就不会再去计算了。
java每天只能执行一个任务
一、用java.util.Timer
使用JAVA类Timer可实现简单的延迟和周期性任务,其中的任务使用java.util.TimerTask表示。任务的执行方式有两种:
按固定速率执行:即scheduleAtFixedRate的两个重载方法
Timer timer = newTimer();
timer. scheduleAtFixedRate(newTimerTask() {
@Overridepublic voidrun() {
System.out.println(“Timer is running”);
}
},2000, 5000);
按固定延迟执行:即schedule的4个重载方法
Timer timer = newTimer();
timer.schedule(newTimerTask() {
@Overridepublic voidrun() {
System.out.println(“Timer is running”);
}
},2000);
我们要实现一个定时任务,只需要实现TimerTask的run方法即可。每一个任务都有下一次执行时间nextExecutionTime(毫秒),如果是周期性的任务,那么每次执行都会更新这个时间为下一次的执行时间,当nextExecutionTime小于当前时间时,都会执行它。
Timer的缺陷
1、由于执行任务的线程只有一个,所以如果某个任务的执行时间过长,那么将破坏其他任务的定时精确性。如一个任务每1秒执行一次,而另一个任务执行一次需要5秒,那么如果是固定速率的任务,那么会在5秒这个任务执行完成后连续执行5次,而固定延迟的任务将丢失4次执行。
2、如果执行某个任务过程中抛出了异常,那么执行线程将会终止,导致Timer中的其他任务也不能再执行。
3、Timer使用的是绝对时间,即是某个时间点,所以它执行依赖系统的时间,如果系统时间修改了的话,将导致任务可能不会被执行。
二、使用ScheduledThreadPoolExecutor
由于Timer存在上面说的这些缺陷,在JDK1.5中,我们可以使用ScheduledThreadPoolExecutor来代替它,使用Executors.newScheduledThreadPool工厂方法或使用ScheduledThreadPoolExecutor的构造函数来创建定时任务,它是基于线程池的实现,不会存在Timer存在的上述问题,当线程数量为1时,它相当于Timer。
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.schedule(newRunnable() {public voidrun() {
System.out.println(“delay 3 seconds”);
}
},3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(()-System.out.println(“delay 1 seconds, and excute every 3 seconds”)
,1, 3, TimeUnit.SECONDS);
简述java语言的执行过程
先编写好.java的文件,这个成为源文件,在使用javac编译源文件,得到.class文件(javac
Test.java),最后执行java命令得到结果(java
Test)。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154523.html