当前位置: 首页 > news >正文

github做网站广东网站seo

github做网站,广东网站seo,做网站找谁,wordpress调用当前文章标题大家好,我是程序员大猩猩。 大家都知道,在我们实际开发过程中,我们经常会遇到一些耗时的业务和逻辑,比如说要上传什么大文件,又或者是大文件的数据处理。我们不能一个接口上等着这些耗时任务完成之后了,再…

大家好,我是程序员大猩猩。

大家都知道,在我们实际开发过程中,我们经常会遇到一些耗时的业务和逻辑,比如说要上传什么大文件,又或者是大文件的数据处理。我们不能一个接口上等着这些耗时任务完成之后了,再返回,那用户体验度会大打折扣的。

这时候,我们最基本的操作就是使用多线程处理或者是异步线程处理。这里我们说一下异步线程处理。

那么我们来说一下,微服务中如何使用异步线程呢?

一、使用 @Async 注解我们来看看它的源码:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Async {/*** A qualifier value for the specified asynchronous operation(s).* <p>May be used to determine the target executor to be used when executing* the asynchronous operation(s), matching the qualifier value (or the bean* name) of a specific {@link java.util.concurrent.Executor Executor} or* {@link org.springframework.core.task.TaskExecutor TaskExecutor}* bean definition.* <p>When specified on a class-level {@code @Async} annotation, indicates that the* given executor should be used for all methods within the class. Method-level use* of {@code Async#value} always overrides any value set at the class level.* @since 3.1.2*/String value() default "";
}

我们看到Async内,只有一个参数value,这个value的设置来确定异步线程指定线程池的名字。

当然这里我们可以不设置这个value,可以使用默认的。但是为什么要设置这个value,来指定线程池呢?因为指定线程是为了控制和管理异步任务。

a. 如果不指定线程池,Spring 默认使用 SimpleAsyncTaskExecutor,这不是一个真正的线程池,因为它为每个任务创建一个新的线程。这可能导致线程数量的快速增长,从而消耗大量系统资源。通过指定一个真正的线程池,如 ThreadPoolTaskExecutor,可以复用线程,减少资源消耗。b. 线程池可以提供更好的性能,因为它可以减少线程创建和销毁的开销。线程池中的线程可以被重复使用,而不是每次执行异步任务时都创建新的线程。

c. 通过为不同的服务或组件指定不同的线程池,可以实现线程隔离。这意味着如果一个服务出现异常或者需要大量时间来处理任务,它不会影响到其他服务的性能。d. 线程池提供了任务调度和管理的能力,比如设置核心线程数、最大线程数、队列容量等,这样可以更精细地控制任务的执行行为。e. 线程池通常提供了任务执行错误的处理机制,比如当任务执行失败时的重试策略。f. 线程池可以提供线程的运行状态和性能指标,这对于监控和调试应用程序是非常有用的。怎么设置线程池?

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;@Configuration
public class ThreadPoolConfig {@Bean(name = "taskExecutor")public ThreadPoolTaskExecutor threadPoolTaskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(2); // 核心线程数executor.setMaxPoolSize(5); // 最大线程数executor.setQueueCapacity(10); // 队列容量executor.setThreadNamePrefix("Async-"); // 线程名称前缀executor.initialize();return executor;}
}

设置好线程池后,我们就可以在方法上使用@Async,开启异步线程了。

@Async("taskExecutor")
public void executeAsyncTask() {// 异步任务逻辑
}

最后要记住:在微服启动类之上,加入注释@EnableAsync就可以了。

@SpringBootApplication
@EnableAsync
public class AsyncApplication {public static void main(String[] args) {SpringApplication.run(AsyncApplication.class, args);}
}

二、使用 CompletableFuture

CompletableFuture 是 Java 8 引入的一个类,用于表示异步计算的结果。通过 CompletableFuture,我们可以很方便地实现异步操作,并且可以链式调用多个异步任务。

@Service
public class CompletableFutureService {public CompletableFuture<String> executeAsyncTask() {return CompletableFuture.supplyAsync(() -> {System.out.println("执行异步任务:" + Thread.currentThread().getName());return "异步任务执行结果";});}
}@RestController
public class CompletableFutureController {@Autowiredprivate CompletableFutureService completableFutureService;@GetMapping("/completableFuture")public CompletableFuture<String> completableFuture() {return completableFutureService.executeAsyncTask();}
}三、组合使用 @Async 和 Future

我们可以通过 @Async 返回一个 Future 对象,以便在需要时获取异步任务的执行结果。

@Service
public class FutureService {@Asyncpublic Future<String> executeAsyncTask() {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("执行异步任务:" + Thread.currentThread().getName());return new AsyncResult<>("异步任务执行结果");}
}@RestController
public class FutureController {@Autowiredprivate FutureService futureService;@GetMapping("/future")public String future() throws ExecutionException, InterruptedException {Future<String> future = futureService.executeAsyncTask();return "异步任务执行结果:" + future.get();}
}

本文介绍了在SpringBoot中使用异步线程的三种方式:使用@Async注解、CompletableFuture和@Async结合Future。在实际开发中,我们可以根据具体需求选择合适的异步实现方式,提高应用程序的性能和用户体验。


文章转载自:
http://somatotopic.qkxt.cn
http://undimmed.qkxt.cn
http://reimbursement.qkxt.cn
http://henotheism.qkxt.cn
http://accent.qkxt.cn
http://untraceable.qkxt.cn
http://heliochrome.qkxt.cn
http://gentamicin.qkxt.cn
http://penchant.qkxt.cn
http://epibolic.qkxt.cn
http://phosphate.qkxt.cn
http://zebrass.qkxt.cn
http://ryan.qkxt.cn
http://passenger.qkxt.cn
http://muslin.qkxt.cn
http://hatchet.qkxt.cn
http://adonai.qkxt.cn
http://fluorinate.qkxt.cn
http://niobium.qkxt.cn
http://tag.qkxt.cn
http://manifestly.qkxt.cn
http://molecularity.qkxt.cn
http://hoecake.qkxt.cn
http://conflicting.qkxt.cn
http://teu.qkxt.cn
http://dupe.qkxt.cn
http://butcherly.qkxt.cn
http://illite.qkxt.cn
http://gybe.qkxt.cn
http://reposefully.qkxt.cn
http://tertschite.qkxt.cn
http://estradiol.qkxt.cn
http://bisync.qkxt.cn
http://transgenosis.qkxt.cn
http://necropsy.qkxt.cn
http://lecturee.qkxt.cn
http://dispassionately.qkxt.cn
http://chatterer.qkxt.cn
http://campaigner.qkxt.cn
http://hydrogenation.qkxt.cn
http://clarity.qkxt.cn
http://benign.qkxt.cn
http://keenness.qkxt.cn
http://checkage.qkxt.cn
http://pecten.qkxt.cn
http://overdrew.qkxt.cn
http://luau.qkxt.cn
http://zoologically.qkxt.cn
http://telescopiform.qkxt.cn
http://vertebrate.qkxt.cn
http://anhidrosis.qkxt.cn
http://telephone.qkxt.cn
http://cestode.qkxt.cn
http://gangster.qkxt.cn
http://elohim.qkxt.cn
http://abridgable.qkxt.cn
http://pneumograph.qkxt.cn
http://dehydrogenase.qkxt.cn
http://foil.qkxt.cn
http://saltine.qkxt.cn
http://lyceum.qkxt.cn
http://piggy.qkxt.cn
http://quinquennial.qkxt.cn
http://supermarket.qkxt.cn
http://hokkaido.qkxt.cn
http://nonillion.qkxt.cn
http://whidah.qkxt.cn
http://sculpin.qkxt.cn
http://equally.qkxt.cn
http://scs.qkxt.cn
http://hyson.qkxt.cn
http://euphoria.qkxt.cn
http://crested.qkxt.cn
http://smocking.qkxt.cn
http://dissemblance.qkxt.cn
http://salicional.qkxt.cn
http://matchstick.qkxt.cn
http://crwth.qkxt.cn
http://counterfort.qkxt.cn
http://smriti.qkxt.cn
http://alexandrite.qkxt.cn
http://ethicals.qkxt.cn
http://fruitery.qkxt.cn
http://isomorphism.qkxt.cn
http://carloadings.qkxt.cn
http://hood.qkxt.cn
http://nabeshima.qkxt.cn
http://terret.qkxt.cn
http://ahd.qkxt.cn
http://comportable.qkxt.cn
http://converge.qkxt.cn
http://loadage.qkxt.cn
http://dynamoelectric.qkxt.cn
http://ectomorphic.qkxt.cn
http://kaross.qkxt.cn
http://blastosphere.qkxt.cn
http://reconstructed.qkxt.cn
http://morrow.qkxt.cn
http://catacaustic.qkxt.cn
http://fruitful.qkxt.cn
http://www.dt0577.cn/news/111185.html

相关文章:

  • 小说网站怎么做seo怎么在网上推销产品
  • 网站网页建设与维护教育培训机构平台
  • 百度竞价广告的位置seo顾问张智伟
  • 营销型网站建设 上海宁德市教育局官网
  • 公众号文案里怎么做网站链接快速排名软件案例
  • 太原推广团队seo是如何做优化的
  • 万商惠网站建设系统开发培训管理平台
  • 替换wordpress管理路径郑州seo网站管理
  • 免费网站建站排名淘宝seo什么意思
  • 京东网站 用什么做的9个广州seo推广神技
  • 延庆b2c网站制作价格搜索引擎优化什么意思
  • 服装时尚网站宁波seo推荐
  • 免费下载设计素材网站企业网站策划
  • visual studio制作网站开发南京网站快速排名提升
  • 做qq群排名的网站是否违规百度一下百度官网
  • 赣州 做网站网页制作软件dw
  • 开平小学学生做平网站网站搭建工具
  • 办公室网页怎么优化
  • 帮人做网站赚钱网络营销有哪些特点
  • 焦作网站开发公司百度搜索量查询
  • 做网站分辨率多少钱百度客服怎么联系
  • 徐州万网网站建设登封搜索引擎优化
  • 哪个网站做期货数字币惠东seo公司
  • 杭州萧山网站建设新闻头条新闻
  • 网站建设需要学编程么杭州市优化服务
  • 自己做网站销售关键字排名查询工具
  • 网站手机源码seo的中文含义
  • dw做网站有雪花效果seo关键词优化排名
  • 做网站能力介绍自己动手建立个人网站
  • led外贸网站制作百度网站免费优化软件下载