1 Star 0 Fork 0

小西学编程/java-learning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ScheduledThreadPoolExecutorDemo.java 3.64 KB
一键复制 编辑 原始数据 按行查看 历史
package net.weichitech.util;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolExecutorDemo {
public static void main(String[] args) {
executeFixedPeriodTaskWithEnoughResource();
}
/**
* 执行一个延迟的任务
*/
private static void executeDelayTask() {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
PrintUtil.print("start schedule a task.");
executor.schedule(new Runnable() {
@Override
public void run() {
PrintUtil.print("task is running.");
}
}, 5, TimeUnit.SECONDS);
}
/**
* 按照固定的延迟执行任务
*/
private static void executeFixedDelayTask() {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
PrintUtil.print("start schedule a task.");
executor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
PrintUtil.print("task is running.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
PrintUtil.print("task is finished.");
}
}, 0, 5, TimeUnit.SECONDS);
}
/**
* 按照固定的周期执行任务
*/
private static void executeFixedPeriodTask() {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(10);
PrintUtil.print("start schedule a task.");
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
PrintUtil.print("task is running.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
PrintUtil.print("task is finished.");
}
}, 0, 5, TimeUnit.SECONDS);
}
/**
* 按照固定的周期执行任务多个任务,但是资源够。
*/
private static void executeFixedPeriodTaskWithEnoughResource() {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
PrintUtil.print("start schedule a task.");
executor.scheduleAtFixedRate(new DemoTask("task1", 3000), 0, 5, TimeUnit.SECONDS);
executor.scheduleAtFixedRate(new DemoTask("task2", 3000), 0, 5, TimeUnit.SECONDS);
}
/**
* 按照固定的周期执行任务多个任务,但是资源不够了。
*/
private static void executeFixedPeriodTaskWithNoResource() {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
PrintUtil.print("start schedule a task.");
executor.scheduleAtFixedRate(new DemoTask("task1", 3000), 0, 5, TimeUnit.SECONDS);
executor.scheduleAtFixedRate(new DemoTask("task2", 3000), 0, 5, TimeUnit.SECONDS);
}
static class DemoTask implements Runnable {
private String name;
private long taskExecuteTime;
DemoTask(String name, long taskExecuteTime) {
this.name = name;
this.taskExecuteTime = taskExecuteTime;
}
@Override
public void run() {
PrintUtil.print(name + " is running.");
try {
Thread.sleep(taskExecuteTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
PrintUtil.print(name + " is finished.");
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/xiaoxijava/java-learning.git
git@gitee.com:xiaoxijava/java-learning.git
xiaoxijava
java-learning
java-learning
master

搜索帮助