Управляемое чтение
Из-за потребностей проекта в классе теперь есть несколько запланированных задач, но они могут выполняться только последовательно, и их нужно настроить так, чтобы они могли выполняться одновременно.
использовать
причина
Одна запланированная задача может выполняться только последовательно следующим образом:
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Date;
@Component
@Async
public class Sche {
/**
* 每隔1s执行一次
*/
@Scheduled(cron = "0/1 * * * * ?")
public static void pushPreNodeData() {
System.out.println("测试每10s执行定时任务~");
}
/**
* 指定时间执行一次,这里指定2020-04-10 16:37:00分执行
* @throws InterruptedException
*/
@Scheduled(cron = "0 37 16 10 4 ?")
public void pushssPreNodeData() throws InterruptedException {
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
if ("2020".equals(year)) {
while (true) {
//休眠2s
Thread.sleep(2000);
System.out.println("哈哈哈~" + new Date());
}
}
}
}
- Консоль выглядит следующим образом:
- В это время может выполняться только одна запланированная задача, но не одновременно. Если одно из них не выполнено, другое запланированное задание не может быть выполнено одновременно.
Уведомление: классу запуска необходимо включить запланированные задачи и добавить аннотации.@EnableScheduling
Решение
Простое понимание того, что, поскольку он однопоточный, он не может выполняться одновременно. Если одно из них не выполнено, другое запланированное задание не может быть выполнено.
Если вы хотите, чтобы коллеги выполняли, вы можете добавить его в класс запуска здесьTaskScheduler, его можно выполнить одновременно с повторным запуском.
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskExecutor = new ThreadPoolTaskScheduler();
taskExecutor.setPoolSize(30);
return taskExecutor;
}
- Консоль выглядит следующим образом
получить это ~
END
chaohen:www.yuque.com/heioky
Демонстрация кадров таймера от большого парня, вора воловьей кожи.
qyartzdemo.7z