java - Java:线程编程,线程睡眠
问题描述
我有一个主线程,它有自己的子线程。每个线程都有一个要执行的进程,并且该特定线程在其工作完成后必须休眠,直到下一次线程唤醒频率。
我已经实现了整个代码部分,但无法让线程休眠,因为我不知道该线程的工作是否完成,以便让它休眠到下一个频率时间。
- 创建主线程
- 为数据库中的每个进程创建子线程。
- 对于每个子线程进程,它会检查其运行时和下一个运行时以执行作业。
- 工作完成后让线程休眠,直到下一次运行时。
- 转到步骤 3。
我被困在 4 点,检查线程是否完成了它的工作。(这里子线程没有说,如果它的工作完成与否,我们让它在工作完成后让它休眠)
谁能帮忙,怎么办?
private static ScheduledExecutorService stp = Executors.newScheduledThreadPool(11);
@Scheduled(fixedDelayString = "${con.fixedDelay}")
public void processServices() {
try {
logger.debug("Entering processServices in MasterProcessThread ");
// Getting process details and schedule
List<ProcessDomain> activeProcessList = processDomainDao.getActiveProcessDomainSchedule();
logger.info("getDomainData for flag is Active :: " + activeProcessList.size());
// Iterating over active processList to create child threads
for (ProcessDomain activeProcessDomain : activeProcessList) {
Timestamp nextRunTS = activeProcessDomain.getProcessSchedule().getProcessNextRunScheduleTime();
Long nextRunTime = (nextRunTS != null ? nextRunTS.getTime() : null);
Long startTS = activeProcessDomain.getProcessSchedule().getProcessScheduleTime().getTime();
Long currentTS = System.currentTimeMillis();
boolean isPreviousRunSucc = (activeProcessDomain.getProcessRunHistory().getPreviousSuccFlag() != null
&& activeProcessDomain.getProcessRunHistory().getPreviousSuccFlag().equals("Y")) ? true : false;
Future future = null;
// Initializing the child threads and start processing
if (((nextRunTime == null && currentTS >= startTS) || (nextRunTime != null && currentTS >= nextRunTime))
&& isPreviousRunSucc) {
Callable task = beanServiceThreadFactory.getBeanThread(activeProcessDomain.getProcessName(),
activeProcessDomain);
future = stp.submit(task);
if (future.isDone()){
stp.shutdown();
}
}
}
解决方案
推荐阅读
- python - 在 Tensorflow 中使用神经网络的奇怪决策边界
- rust - 如何使用 PalletB 从 PalletA 保存记录,而 PalletA 不知道节省基材和生锈的内部机制
- php - 为什么从数据库加载的 JSON 上的 PHP json_decode 不起作用?
- html - 应该使用什么数据类型将联系人号码插入 mysql?
- r - ggplot更改单日POSIXct变量的x轴起点
- javascript - React Native - 如何拍摄多个快照并选择它们
- javascript - 将字符串日志转换为 Json 格式
- asp.net-core - 将子对象从具有不同模型的视图传递到部分视图,在发布表单时将其绑定
- spring-boot - SpringBoot actuator system.cpu.count metric 和 system.cpu.usage metric 的关系
- swift - macOS - 使用比部署目标更新的 UI 元素编译 xib