Skip to content

Commit

Permalink
springboot整合定时任务以及异步任务
Browse files Browse the repository at this point in the history
  • Loading branch information
leechenxiang committed Dec 8, 2017
1 parent 3c8e309 commit 1d131ab
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/main/java/com/imooc/ImoocApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
//扫描 mybatis mapper 包路径
@MapperScan(basePackages = "com.imooc.mapper")
//扫描 所有需要的包, 包含一些自用的工具类包 所在的路径
@ComponentScan(basePackages= {"com.imooc", "org.n3r.idworker"})
//开启定时任务
@EnableScheduling
//开启异步调用方法
@EnableAsync
public class ImoocApplication {

public static void main(String[] args) {
Expand Down
38 changes: 38 additions & 0 deletions src/main/java/com/imooc/tasks/AsyncTask.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.imooc.tasks;

import java.util.concurrent.Future;

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component;

@Component
public class AsyncTask {

@Async
public Future<Boolean> doTask11() throws Exception {
long start = System.currentTimeMillis();
Thread.sleep(1000);
long end = System.currentTimeMillis();
System.out.println("任务1耗时:" + (end - start) + "毫秒");
return new AsyncResult<>(true);
}

@Async
public Future<Boolean> doTask22() throws Exception {
long start = System.currentTimeMillis();
Thread.sleep(700);
long end = System.currentTimeMillis();
System.out.println("任务2耗时:" + (end - start) + "毫秒");
return new AsyncResult<>(true);
}

@Async
public Future<Boolean> doTask33() throws Exception {
long start = System.currentTimeMillis();
Thread.sleep(600);
long end = System.currentTimeMillis();
System.out.println("任务3耗时:" + (end - start) + "毫秒");
return new AsyncResult<>(true);
}
}
38 changes: 38 additions & 0 deletions src/main/java/com/imooc/tasks/DoTask.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.imooc.tasks;

import java.util.concurrent.Future;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("tasks")
public class DoTask {

@Autowired
private AsyncTask asyncTask;

@RequestMapping("test1")
public String test1() throws Exception {

long start = System.currentTimeMillis();

Future<Boolean> a = asyncTask.doTask11();
Future<Boolean> b = asyncTask.doTask22();
Future<Boolean> c = asyncTask.doTask33();

while (!a.isDone() || !b.isDone() || !c.isDone()) {
if (a.isDone() && b.isDone() && c.isDone()) {
break;
}
}

long end = System.currentTimeMillis();

String times = "任务全部完成,总耗时:" + (end - start) + "毫秒";
System.out.println(times);

return times;
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/imooc/tasks/TestTask.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.imooc.tasks;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TestTask {

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

// 定义每过3秒执行任务
// @Scheduled(fixedRate = 3000)
// @Scheduled(cron = "4-40 * * * * ?")
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
}

0 comments on commit 1d131ab

Please sign in to comment.