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

临沂网站制作公司6个人网站怎么建立

临沂网站制作公司6,个人网站怎么建立,市场调研报告怎么写的,网站开发 培训在 Spring 中,Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时,该方法将在单独的线程中执行,而不会阻塞当前线程。这使得方法可以在后台执行,而不会影响主线程的执行。 在您提供的代码示例中,a1() 和…

在 Spring 中,@Async 注解用于将方法标记为异步执行的方法。当使用 @Async 注解时,该方法将在单独的线程中执行,而不会阻塞当前线程。这使得方法可以在后台执行,而不会影响主线程的执行。

在您提供的代码示例中,a1() 和 a2() 方法都被标记为 @Async,意味着它们将以异步方式执行。这意味着当调用这些方法时,它们将会在单独的线程中执行,而不会等待方法执行完成。

如果不使用 @Async 注解,则方法将会以同步方式执行。也就是说,当调用这些方法时,程序将会阻塞在方法执行处,直到方法执行完成才会继续执行后续代码。

因此,加上 @Async 注解的方法能够实现并发执行,而不加 @Async 注解的方法则会按照顺序逐个执行。根据您的代码示例,加上 @Async 注解后,a1() 和 a2() 方法将会同时启动并发执行,而不会相互阻塞。

需要注意的是,使用 @Async 注解需要配置一个任务执行器(Task Executor)来处理异步方法的调用。如果在 Spring Boot 项目中使用 @EnableAsync 注解来启用异步支持,Spring 将会自动配置默认的任务执行器。如果未配置任务执行器,则异步方法将在调用线程中执行,而不会启动新的线程来执行。

配置任务执行器(Task Executor)

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;@Configuration
@EnableAsync
public class AsyncConfig {// 配置任务执行器@Bean(name = "taskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 设置核心线程数executor.setCorePoolSize(10);// 设置最大线程数executor.setMaxPoolSize(20);// 设置队列容量executor.setQueueCapacity(100);// 设置线程活跃时间(秒)executor.setKeepAliveSeconds(60);// 设置线程名称前缀executor.setThreadNamePrefix("Async-");// 设置拒绝策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 初始化线程池executor.initialize();return executor;}
}

设置核心线程数、设置最大线程数和设置队列容量是线程池中的一些重要参数。

  • 核心线程数(Core Thread Pool Size):指的是线程池中保持的线程数量。即使这些线程处于空闲状态,它们也会一直存在于线程池中,以备接收新的任务。当线程池中的线程数量小于核心线程数时,新的任务将会创建新的线程来执行。
  • 最大线程数(Maximum Pool Size):指的是线程池中允许的最大线程数量。当线程池中的线程数量达到核心线程数时,如果还有新的任务需要执行,线程池将会再创建新的线程,直到达到最大线程数为止。当线程池中的线程数量达到最大值且队列也已满时,则会拒绝执行新的任务。
  • 队列容量(Queue Capacity):指的是线程池中任务队列可以容纳的最大任务数量。当线程池中的线程数量达到核心线程数时,如果还有新的任务需要执行,线程池将会将这些任务添加到任务队列中。如果任务队列已满,则会根据线程池的策略来处理这些被拒绝的任务。

这些参数的设置应该根据应用程序的需求和系统的资源来确定。过小的核心线程数和队列容量可能导致任务长时间排队等待执行,而过大的最大线程数则可能会消耗过多的系统资源。

定时任务A1

@Component
@EnableScheduling
public class A1 {@Async("taskExecutor")@Scheduled(cron = "0 0/1 * * * ?")public void a1(){for (int i = 0; i < 1000; i++) {System.out.println("我是a1");}}
}

定时任务A2

@Component
@EnableScheduling
public class A2 {@Async("taskExecutor")@Scheduled(cron = "0 0/1 * * * ?")public void a2(){for (int i = 0; i < 1000; i++) {System.out.println("我是a2");}}
}

加了@Async输出结果大概如下

A1和A2多线程交替执行,并发

我是a1
我是a2
我是a1
我是a2
我是a1
我是a2
我是a1
我是a2
我是a1
我是a2
...

不加@Async输出结果大概如下

先执行完A1才会去执行A2,按顺序执行,阻塞

我是a1
我是a1
我是a1
我是a1
我是a1
我是a2
我是a2
我是a2
我是a2
我是a2
...

当涉及到设置线程池的核心线程数、最大线程数和队列容量时,需要根据具体的应用场景和需求来确定。下面是一些示例:

场景一:Web 服务器请求处理
假设有一个 Web 服务器,需要处理大量的并发请求。在这种情况下,可以考虑以下设置:

  • 核心线程数:根据服务器的负载和处理能力,设置一个适当的核心线程数,例如设置为 CPU 核心数的两倍。
  • 最大线程数:根据服务器的资源和性能,设置一个合理的最大线程数,例如设置为 CPU 核心数的四倍。
  • 队列容量:如果服务器的处理能力超过了核心线程数和最大线程数,可以设置一个适当的队列容量,以便将超出处理能力的请求暂存到队列中,例如使用一个有界队列。

场景二:后台任务处理
假设有一个后台任务需要处理大量的耗时操作,比如文件处理、数据导入等。在这种情况下,可以考虑以下设置:

  • 核心线程数:根据系统的负载和任务的数量,设置一个适当的核心线程数,例如设置为固定值,如10个线程。
  • 最大线程数:根据系统的资源和性能,设置一个合理的最大线程数,例如设置为20个线程。
  • 队列容量:如果任务数量超过了核心线程数和最大线程数,可以设置一个适当的队列容量,以便将超出处理能力的任务暂存到队列中,例如使用一个无界队列。

需要根据具体的应用场景和系统要求来灵活调整这些参数。合理设置这些参数可以提高系统的性能和资源利用率,避免因为线程过多或过少导致的性能问题或资源浪费。

http://www.yayakq.cn/news/773669/

相关文章:

  • 大兴网站建设一条龙万网域名备案网站
  • 网站寄生虫怎么做汕头百度推广公司
  • 网站开发协议书罗湖微信网站制作
  • 建设公司网站需要准备哪些材料热门视频素材
  • 正规网站建设咨询电话网站泛目录怎么做
  • 网站到首页排名门窗 东莞网站建设
  • 如何成为 个网站什么样的人适合做营销
  • 国外网站欣赏如何做付款网站
  • 网站建设 上海珍岛wordpress更改数据库
  • asp.net 多网站网站建设方案 ppt
  • 广州做手机网站咨询网站建设与企业发展
  • 网站流量多少做网盟源码怎样做网站
  • 个人主页网站应该怎样做兰州做网站公司es5188
  • 惠州外贸网站建设推广前端网站开发课程
  • 公司网站用什么cms系统wordpress主题文章圆角化
  • 服务器网站搬家北京网站制作公司兴田德润在那里
  • 南宁网站建设活动旅游网站设计与建设论文
  • 做网站贵不贵做视频点播网站如何赚钱
  • 使用vue做的网站有哪些dede网站首页加悬浮广告
  • 学做网站多少钱h5视频网站模板
  • 国外做ppt网站百度投诉中心人工电话号码
  • 汽车网站制作策划方案做网站公司教程
  • 网站设计与制作软件网站建设方案主要有
  • 高米店网站建设沈阳科技网站首页
  • 贵州公司网站建设比选公示建设工程信息网官网入口
  • 邯郸有做网站的吗企业网站策划大纲模板
  • 分类信息网站推广的意义wordpress搜索修改
  • 推客易可以做自己的网站吗优秀建筑方案设计文本
  • 无广告免费的影视软件湘潭seo快速排名
  • 字体设计教程网站好wordpress内网外网访问不了