JAVA语言 Springboot 用于异步线程的demo
package com.xkcoding.async.task;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
/**
* <p>
* 任务工厂
* </p>
*
*/
@Component
@Slf4j
public class TaskFactory {
/**
* 模拟5秒的异步任务
*/
@Async
public Future<Boolean> asyncTask1() throws InterruptedException {
doTask("asyncTask1", 5);
return new AsyncResult<>(Boolean.TRUE);
}
/**
* 模拟2秒的异步任务
*/
@Async
public Future<Boolean> asyncTask2() throws InterruptedException {
doTask("asyncTask2", 2);
return new AsyncResult<>(Boolean.TRUE);
}
/**
* 模拟3秒的异步任务
*/
@Async
public Future<Boolean> asyncTask3() throws InterruptedException {
doTask("asyncTask3", 3);
return new AsyncResult<>(Boolean.TRUE);
}
/**
* 模拟5秒的同步任务
*/
public void task1() throws InterruptedException {
doTask("task1", 5);
}
/**
* 模拟2秒的同步任务
*/
public void task2() throws InterruptedException {
doTask("task2", 2);
}
/**
* 模拟3秒的同步任务
*/
public void task3() throws InterruptedException {
doTask("task3", 3);
}
private void doTask(String taskName, Integer time) throws InterruptedException {
log.info("{}开始执行,当前线程名称【{}】", taskName, Thread.currentThread().getName());
TimeUnit.SECONDS.sleep(time);
log.info("{}执行成功,当前线程名称【{}】", taskName, Thread.currentThread().getName());
}
} aojiancandao 发表于 2022-11-25 22:19
引用了哪些包啊?麻烦说明下,我就认识Slf4j是日志用的
都是springboot的,还有jdk原生的 引用了哪些包啊?麻烦说明下,我就认识Slf4j是日志用的 谢谢分享 感谢分享
但是还是有点不太懂
再研究一下吧 实际上真实编程 是不准在应用里用异步线程的。。。 谢谢分享,正在学习异步 谢谢分享! 呵呵0214 发表于 2022-11-27 15:50
实际上真实编程 是不准在应用里用异步线程的。。。
同步的就不叫多线程了吧?多线程不就是为了异步提升效率吗
页:
[1]
2