AlexCode 发表于 2022-11-25 16:16

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());
    }
}

AlexCode 发表于 2022-11-30 11:11

aojiancandao 发表于 2022-11-25 22:19
引用了哪些包啊?麻烦说明下,我就认识Slf4j是日志用的

都是springboot的,还有jdk原生的

xiadongming 发表于 2022-11-25 21:33

aojiancandao 发表于 2022-11-25 22:19

引用了哪些包啊?麻烦说明下,我就认识Slf4j是日志用的

nicwang118 发表于 2022-11-27 10:21

谢谢分享

yulonglailo 发表于 2022-11-27 11:42

感谢分享
但是还是有点不太懂
再研究一下吧

呵呵0214 发表于 2022-11-27 15:50

实际上真实编程 是不准在应用里用异步线程的。。。

youzijun 发表于 2023-1-8 18:24

谢谢分享,正在学习异步

ciciwapj 发表于 2023-2-2 14:37

谢谢分享!

crazy1989 发表于 2023-2-16 14:48

呵呵0214 发表于 2022-11-27 15:50
实际上真实编程 是不准在应用里用异步线程的。。。

同步的就不叫多线程了吧?多线程不就是为了异步提升效率吗
页: [1] 2
查看完整版本: JAVA语言 Springboot 用于异步线程的demo