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

东莞连衣裙 东莞网站建设如何修改英文WordPress主题首页

东莞连衣裙 东莞网站建设,如何修改英文WordPress主题首页,小米手表网站,泉州网站建设网络推广一、什么是Future#xff1f; 在并发编程中#xff0c;可以通过Future对象来异步获取结果。 使用Thread或runnable接口都不能获取异步的执行结果#xff0c;因为他们没有返回值。而通过实现Callable接口和Future就可以获取异步执行的结果#xff0c;当异步执行结束后…一、什么是Future 在并发编程中可以通过Future对象来异步获取结果。 使用Thread或runnable接口都不能获取异步的执行结果因为他们没有返回值。而通过实现Callable接口和Future就可以获取异步执行的结果当异步执行结束后返回结果将保存在Future中。使用Future就可以让我们暂时去处理其他的任务而无需一直等待结果等异步任务执行完毕再返回其结果。 二、Future中的get方法 1、get方法 获取任务结束后返回的结果如果调用时任务还没有结束则会进行阻塞线程直到任务完成。该阻塞是可以被打断的打断的线程是调用get方法的线程被打断后原任务会依旧继续执行。 V get() throws InterruptedException, ExecutionException; 2、指定时间的get方法 获取任务结束后返回的结果如果调用时任务还没有结束则会进行阻塞线程等待一定时间如果在规定时间内任务结束则返回结果否则抛出TimeoutException超时后任务依旧会继续执行。该阻塞是可以被打断的打断的线程是调用get方法的线程被打断后原任务会依旧继续执行。 V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException; 三、Future代码示例 步骤1创建一个线程池 public class AsyncTaskExecutor {/*** 核心线程数*/private static final int corePoolSize 10;/*** 最大线程数*/private static final int maxPoolSize 30;/*** 空闲线程回收时间* 空闲线程是指当前线程池中超过了核心线程数之后多余的空闲线程的数量*/private static final int keepAliveTime 100;/*** 任务队列/阻塞队列*/private static final int blockingQueueSize 99999;private static final ThreadPoolExecutor executorPool new ThreadPoolExecutor(corePoolSize,maxPoolSize,keepAliveTime,TimeUnit.MILLISECONDS,new LinkedBlockingQueue(blockingQueueSize),new ThreadFactoryBuilder().setNameFormat(AsyncTaskThread -%d).build(),new ThreadPoolExecutor.CallerRunsPolicy());/*** 异步任务执行** param task*/public static void execute(Runnable task) {executorPool.execute(task);}/*** 异步执行任务Callable, 通过Future获取结果** param task* param T* return*/public static T FutureT submit(CallableT task) {return executorPool.submit(task);}/*** 异步执行任务Runnable通过Future获取结果** param task* return*/public static Future? submit(Runnable task) {return executorPool.submit(task);}}步骤2编写测试类 Testpublic void test2() {try {FutureString future AsyncTaskExecutor.submit(() - {log.info([Future Task] future task start...);try {//模拟任务执行Thread.sleep(5000);} catch (InterruptedException e) {log.info(e.getMessage());}log.info([Future Task] future task end...);return Task completed...;});//执行其他任务log.info([Main Thread] main thread is running...);//使用future阻塞等待任务完成并获取结果String futureResult future.get();log.info([Main Thread] {}, futureResult);}catch (Exception e) {e.printStackTrace();}}步骤3查看结果 2024-05-28 10:58:23.633 INFO 1184 --- [ main] com.example.demo.dao.UserDaoTest : [Main Thread] main thread is running... 2024-05-28 10:58:23.633 INFO 1184 --- [yncTaskThread-0] com.example.demo.dao.UserDaoTest : [Future Task] future task start... 2024-05-28 10:58:28.633 INFO 1184 --- [yncTaskThread-0] com.example.demo.dao.UserDaoTest : [Future Task] future task end... 2024-05-28 10:58:28.634 INFO 1184 --- [ main] com.example.demo.dao.UserDaoTest : [Main Thread] Task completed...四、ListenableFuture public class AsyncTaskExecutor {/*** 核心线程数*/private static final int corePoolSize 10;/*** 最大线程数*/private static final int maxPoolSize 30;/*** 空闲线程回收时间* 空闲线程是指当前线程池中超过了核心线程数之后多余的空闲线程的数量*/private static final int keepAliveTime 100;/*** 任务队列/阻塞队列*/private static final int blockingQueueSize 99999;private static final ThreadPoolExecutor executorPool new ThreadPoolExecutor(corePoolSize,maxPoolSize,keepAliveTime,TimeUnit.MILLISECONDS,new LinkedBlockingQueue(blockingQueueSize),new ThreadFactoryBuilder().setNameFormat(AsyncTaskThread -%d).build(),new ThreadPoolExecutor.CallerRunsPolicy());/*** 创建一个ListeningExecutorService用于执行异步任务* 通过submit提交任务以ListenableFuture获取结果*/private static final ListeningExecutorService LISTENING_EXECUTOR MoreExecutors.listeningDecorator(executorPool);/*** 异步任务执行** param task*/public static void execute(Runnable task) {executorPool.execute(task);}/*** 异步执行任务Callable, 通过ListenableFuture获取结果** param task* param T* return*/public static T ListenableFutureT submit(CallableT task) {return LISTENING_EXECUTOR.submit(task);}/*** 异步执行任务Runnable通过Future获取结果** param task* return*/public static ListenableFuture? submit(Runnable task) {return LISTENING_EXECUTOR.submit(task);} } Testpublic void test2() {try { // sqlSession MybatisUtils.getSqlSession(); // UserDao mapper sqlSession.getMapper(UserDao.class); // boolean x mapper.addUser(new User(6, eeee, eeee, school666)); // if (x true) { // log.info(OK..........); // mapper.getUserList().forEach(user - System.out.println(user)); // }// //步骤1创建异步任务 // CommonTask task new CommonTask(1L, ModelEnum.Chinese); // //步骤2调用线程池异步执行任务 // AsyncTaskExecutor.execute(task); // log.info(main thread over...);CompletableFutureSchool schoolFuture new CompletableFuture();ListenableFutureSchool listenableFuture1 AsyncTaskExecutor.submit(() - {try {//模拟任务执行Thread.sleep(2000);} catch (InterruptedException e) {log.info(e.getMessage());}return new School(DSchool);});ListenableFutureSchool listenableFuture2 AsyncTaskExecutor.submit(() - {try {//模拟任务执行Thread.sleep(2000);} catch (InterruptedException e) {log.info(e.getMessage());}return new School(ESchool);});Futures.successfulAsList(listenableFuture1, listenableFuture2).get();School resSchool listenableFuture1.get(3000, TimeUnit.MILLISECONDS);log.info([Main Thread] result is {}, JSON.toJSON(resSchool));}catch (Exception e) {e.printStackTrace();}}
http://www.w-s-a.com/news/801395/

相关文章:

  • 在线网站备案站长seo综合查询工具
  • 网站根 html网站建设行业数据
  • 网站公司做的网站有最字设计说明室内设计
  • 在线网站代码生成我想做个百度网站怎么做
  • 网站的建设费用分为长治市建设厅官方网站
  • 做网站都有哪些费用建设免费手机网站
  • 网站 组成代码做网站图片怎么插
  • 2020中国企业500强榜单南宁seo标准
  • 北美购物网站排名烟台专业的网站建站公司
  • 门户网站设计特点营销策划咨询机构
  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易