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

网站制作厂家电话多少制作官网需要什么条件

网站制作厂家电话多少,制作官网需要什么条件,太原网站建设推广,开发手机端网站模板下载背景 在需求开发过程中#xff0c;为了提升效率#xff0c;很容易就会遇到需要使用多线程的场景。这个时候一般都会选择建一个线程池去专门用来进行某一类动作#xff0c;这种任务到来的时候往往伴随着大量的线程被创建调用。而还有另外一种场景是整个任务的执行耗时比较长…背景 在需求开发过程中为了提升效率很容易就会遇到需要使用多线程的场景。这个时候一般都会选择建一个线程池去专门用来进行某一类动作这种任务到来的时候往往伴随着大量的线程被创建调用。而还有另外一种场景是整个任务的执行耗时比较长但又不适合起多线程去运行只能后台起一个异步线程去慢慢跑。这个时候就需要一个公共的线程池。 可选方案 总体思想就是要有一个全局可用的线程池可以用来执行一些零散的任务。 方案一 自定义一个全局的线程池需要异步操作的就调用。这种方法好处是实现简单并且调用起来也简单直接当成一个方法就可以了。但需要同模块项目或者导入了模块才能使用。 方案二 使用Spring自带的注解Async实现异步。这种方法的好处是注解可以跨模块使用因为线程池对象会被注入容器整个服务共用。而且更大的好处是使用简单使用者只需要给所需异步操作的方法加上Async(“beanName”)即可。其中beanName是指注入容器的对象的名称也可以不加参数不加参数代表使用默认线程池。 考虑到便捷性和新手友好性选择了方案二。 实现注意看我的调用的结构可以避免循环依赖 controller-async-service √ controller-service-async-service ×这样会出现循环依赖 1.创建线程池配置类 /** * 必须加上EnableAsync注解 */ EnableAsync Configuration public class TaskPoolConfig {/*** 可以多创建几个bean注入容器根据bean不同用来执行不同类型的任务*/Bean(taskExecutor)public Executor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();//核心线程池大小executor.setCorePoolSize(16);//最大线程数executor.setMaxPoolSize(20);//配置队列容量默认值为Integer.MAX_VALUEexecutor.setQueueCapacity(99999);//活跃时间executor.setKeepAliveSeconds(60);//线程名字前缀executor.setThreadNamePrefix(asyncServiceExecutor -);//设置此执行程序应该在关闭时阻止的最大秒数以便在容器的其余部分继续关闭之前等待剩余的任务完成他们的执行executor.setAwaitTerminationSeconds(60);//等待所有的任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;}Bean(taskExecutor2)public Executor taskExecutor2() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();//核心线程池大小executor.setCorePoolSize(16);//最大线程数executor.setMaxPoolSize(20);//配置队列容量默认值为Integer.MAX_VALUEexecutor.setQueueCapacity(99999);//活跃时间executor.setKeepAliveSeconds(60);//线程名字前缀executor.setThreadNamePrefix(asyncServiceExecutor -);//设置此执行程序应该在关闭时阻止的最大秒数以便在容器的其余部分继续关闭之前等待剩余的任务完成他们的执行executor.setAwaitTerminationSeconds(60);//等待所有的任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;} }2.使用异步 异步类 public interface AsyncService {void test(); }Slf4j Service public class AsyncServiceImpl implements AsyncService {Autowiredprivate TestService testService;//这里的参数是只bean的名称不填则使用默认的线程池。如果这个注解放在类上代表这个类里面的全部方法都走异步Async(taskExecutor)void test(){testService.todo();}Async(taskExecutor2)void test2(){testService.todo2();} }业务类 public interface TestService {void todo();void todo2(); }Slf4j Service public class TestServiceImpl implements TestService{void todo(){LocalDateTime dateTimeLocalDateTime.now();log.info(已经进入异步方法现在时间{}睡三秒,dateTime);try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}dateTimeLocalDateTime.now();log.info(三秒后时间为{},dateTime);}void todo2(){} }测试类 Slf4j RestController public class TestController {Autowiredprivate AsyncService asyncService;RequestMapping(/test)public void test(){asyncService.test();LocalDateTime dateTimeLocalDateTime.now();log.info(这是主线程现在时间为{},dateTime);} }结果成功 坑点 1.异步失效 如果一个类里面有两个方法A、B方法B添加了异步注解方法A调用方法B异步不会生效。 查了一下好像是因为异步注解的实现用到了动态代理而一个类内部方法的调用不会走代理也就没法实现异步。 因此建议把异步都放在一个专门的异步类里面这个类的方法只用来实现异步方法内部再去调用真正的业务逻辑方法。 2.循环依赖 正常来说A类中注入B类对象B类中再注入A类对象。这种情况在代码中并不会发生循环依赖。而在异步注解中会出现循环依赖因为异步注解底层实现用的是动态代理。
http://www.eeditor.cn/news/122467/

相关文章:

  • 网站建设 站内搜索wordpress主机搬家
  • 网站代码生成网站单机网页小游戏
  • 银川网站建设0951营销型企业网站案例
  • 加强网站信息怎么做广西桂林十大特产
  • 公司网站建设维护及使用管理办法手机网络游戏
  • 母婴网站的功能设计门户类网站什么意思简单
  • 专业网站设计开发网站广告海报
  • 医院网站 功能深圳企业官网网站建设
  • 织梦技术个人网站模板wordpress还原网站源码
  • 求人做网站的网站百度新网站提交入口
  • 专业移动微网站建设宁德市住房和城乡建设局
  • 运河建设集团网站深圳网站建设专家
  • 广州网站设计成功柚米中小型网站建设市场
  • 什么是网站开发wordpress 页面栏目
  • 阿里巴巴个人网站怎么做c 网站开发实例教学
  • 网站建设与管理的体会电子商务网站开发需求分析
  • 如何建立一个企业的网站桂林两江四湖在哪里
  • 电商网站如何做怎么给网站添加代码
  • 洞口网站开发公司网络营销软文范例500字
  • 网站tdk优化精装房软装设计公司
  • 道滘网站仿做app设计思路怎么写
  • 如何做优化网站的原创性文章wordpress调用代码怎么用
  • 网站淘客怎么做wangzhan
  • 建立网站的优势用vs2012做网站教程
  • 河间市做网站郑州网站推广哪家效果好
  • 怎么看别人网站是怎么做的网站vr的建设
  • 安装字体怎么在wordpressseo排名如何优化
  • 网站建设销售专业话术网站东莞优化建设
  • 建e网官方网站公司网站建设系统
  • 织梦cms网站模板修改如何做优化网站排名