| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.concurrent.locks.Lock; |
| | | import java.util.concurrent.locks.ReentrantLock; |
| | | //import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | @Autowired |
| | | ISiteArticleService iSiteArticleService; |
| | | |
| | | boolean NewsInfoTask = true; |
| | | |
| | | private final AtomicBoolean NewsInfoTask = new AtomicBoolean(false); |
| | | |
| | | |
| | | private final Lock NewsInfoTaskLock = new ReentrantLock(); |
| | | /* |
| | |
| | | * */ |
| | | @Scheduled(cron = "0 0/5 * * * ?") |
| | | public void NewsInfoTask() { |
| | | if (NewsInfoTask) // 定义一个布尔变量,代表新闻任务是否在处理中 |
| | | if (NewsInfoTask.get()) { // 判断任务是否在处理中 |
| | | return; |
| | | NewsInfoTask = true; // 设置处理中标识为 true |
| | | } |
| | | if (NewsInfoTaskLock.tryLock()) { // 加锁 |
| | | try { |
| | | NewsInfoTask.set(true); // 设置处理中标识为true |
| | | System.out.println("新闻定时任务---->开始"); |
| | | iSiteNewsService.grabNews(); |
| | | } catch (Exception e) { |
| | | System.err.println("新闻抓取出现异常: " + e.getMessage()); // 打印具体的异常信息 |
| | | } finally { |
| | | NewsInfoTaskLock.unlock(); // 释放锁 |
| | | NewsInfoTask = false; // 设置处理中标识为 false |
| | | NewsInfoTask.set(false); // 设置处理中标识为false |
| | | System.out.println("新闻定时任务---->结束"); |
| | | } |
| | | } |