scheduleAtFixedRate与scheduleWithFixedDelay区别,代码如下:
import java.util.Date;
import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class SchedulePool {
public static void main(String[] args) {
Task task = new Task();
/**
*
scheduleAtFixedRate固定频率执行某项任务
* */
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(task, 1000, 1000*2, TimeUnit.MILLISECONDS);
/**
*
scheduleWithFixedDelay相对延迟,固定频率执行某项任务
* */
Executors.newScheduledThreadPool(3).scheduleWithFixedDelay(task, 1000, 1000*2, TimeUnit.MILLISECONDS);
/**
* scheduleAtFixedRate和scheduleWithFixedDelay区别。
* scheduleAtFixedRate方法按照固定的频率执行线程,scheduleWithFixedDelay方法不是按照固定频率执行线程。
* 该方法是(固定的频率+线程执行需要的时间),方才执行下次线程。
* */
}
}
class Task implements Runnable
{
@Override
public void run() {
System.out.println("当前线程:"+Thread.currentThread()+",执行时间:"+new Date().getTime());
try {
Thread.sleep(new Random().nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
scheduleAtFixedRate方法执行的结果
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458587192
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458589189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458591189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458593189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458595189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458597189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458599189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458601189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458603189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458605190
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458607190
scheduleWithFixedDelay方法执行的结果
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459052266
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459054629
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459056671
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459059590
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459062251
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459064754
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459067656
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459069756
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459072734
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459075007
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459077357
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459080252
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459082861
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459085492
分享到:
相关推荐
它提供了多种方法来执行任务,如 scheduleAtFixedRate、scheduleWithFixedDelay 等。ScheduledExecutorService 可以用来实现各种定时任务,如每天某个时间执行某个任务、每隔一段时间执行某个任务等。 ...
开发者可以创建一个ScheduledThreadPoolExecutor实例,然后通过其scheduleAtFixedRate或scheduleWithFixedDelay方法来安排周期性任务。此外,Spring框架提供了更高级的定时任务管理,如@Scheduled注解和Task...
ScheduledExecutorService提供了两种方法来实现定时任务的执行,分别是scheduleAtFixedRate和scheduleWithFixedDelay。 scheduleAtFixedRate方法 scheduleAtFixedRate方法用于实现定时任务的执行,例如,每隔3秒...
你需要定义一个Runnable或Callable任务,其中包含更新DNS记录的逻辑,然后通过ScheduledExecutorService的scheduleAtFixedRate或scheduleWithFixedDelay方法设置执行间隔。 4. **异常处理与重试策略**:考虑到网络...
然后,我们可以通过ScheduledExecutorService的scheduleWithFixedDelay()或scheduleAtFixedRate()方法来安排任务。例如,使用Runnable来实现定时任务: ```java ScheduledFuture<?> future = ...
通过scheduleAtFixedRate或scheduleWithFixedDelay方法,可以设置定时任务,适合需要线程池管理的复杂场景。 在描述中提到的“做及时通讯播放语音”,可能涉及到以下几个关键技术点: 1. **AudioTrack**: ...
你可以定义一个实现了Runnable或Callable接口的类,然后使用ScheduledExecutorService的scheduleAtFixedRate或scheduleWithFixedDelay方法来设置周期执行。 ```java ScheduledExecutorService executor = Executors...
Java线程池 ...> scheduleWithFixedDelay(Callable<V> callable, long initialDelay, long delay, TimeUnit unit); ``` 在上面的示例代码中,我们使用了scheduleAtFixedRate方法来执行定时任务。
调用scheduleAtFixedRate()方法或者scheduleWithFixedDelay()方法时,会向DelayQueue添加一个实现了RunnableScheduledFuture接口的ScheduledFutureTask
值得注意的是,scheduleAtFixedRate和schedule方法的区别在于,前者保证了固定的执行间隔,而后者保证了固定的延迟时间,这在处理可能出现的执行延迟时会有不同表现。 接下来,ScheduledExecutorService是Java并...
它提供了schedule、scheduleAtFixedRate和scheduleWithFixedDelay等方法,可以按指定延迟启动任务,或者定期执行任务。 6. **并发集合**: Java的并发集合类,如ConcurrentHashMap、CopyOnWriteArrayList等,为多...
8. **`scheduleAtFixedRate()`和`scheduleWithFixedDelay()`**:两者都是`ScheduledExecutorService`的方法,用于周期性执行任务。`scheduleAtFixedRate()`按照固定的速率执行任务,即使上一次任务执行超时,下一次...
在Java中,ScheduledExecutorService可以用来定时执行任务,它提供了一系列的schedule方法,如scheduleAtFixedRate和scheduleWithFixedDelay,可以用来定期执行任务。 ```java ScheduledExecutorService scheduler ...
你可以通过实现Runnable或Callable接口来创建任务,并使用ScheduledExecutorService的schedule、scheduleAtFixedRate或scheduleWithFixedDelay方法进行调度。 3. **java.time包**:自Java 8引入以来,这个包极大地...
这个接口提供了scheduleAtFixedRate()或scheduleWithFixedDelay()方法,可以设置一个固定的延迟或者周期性地执行任务。在本程序中,开发者会创建一个任务,该任务在指定时间后调用Windows系统的shutdown命令,实现...
- **ScheduledExecutorService**:如果使用了ScheduledExecutorService,那么会使用它的scheduleAtFixedRate或scheduleWithFixedDelay方法来设置定时任务。 3. **用户交互** - **事件监听**:使用ActionListener...
它提供了schedule、scheduleAtFixedRate和scheduleWithFixedDelay等方法,可以按照指定的时间间隔执行任务。 7. **CompletableFuture**: Java 8引入了CompletableFuture,这是一个强大的工具,用于处理异步编程。它...
- `scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)`: 以固定延迟重复执行任务,上一次执行结束与下一次执行开始之间的时间间隔为固定值。 3. 示例代码: 使用Timer类...
3. `scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)`: 类似于`scheduleAtFixedRate`,但区别在于两次任务执行之间的时间间隔是上一次任务结束到下一次任务开始的时间,而...
- `scheduleAtFixedRate(TimerTask task, long initialDelay, long period)`和`scheduleWithFixedDelay(TimerTask task, long initialDelay, long delay)`用于周期性执行任务,区别在于前者保证了两次执行之间的...