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

做简单网站用什么软件有哪些长沙企业建

做简单网站用什么软件有哪些,长沙企业建,flash做游戏下载网站,无锡网站排名公司一、什么是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.dnsts.com.cn/news/116449.html

相关文章:

  • 表白网站在线生成免费app推广运营是做什么的
  • 360免费建站怎么做安卓市场app下载
  • 提供邯郸wap网站建设故乡网站开发的意义
  • 网站建设费用 开办费软件开发是什么职业
  • 爱情动做网站推荐郑州网站建设喝彩科技
  • 网站开发调查问卷怎么做微信网站
  • 贵阳酒店网站建设前端seo优化
  • 珠海网站建设的公司哪家好页面简洁的导航网站
  • 购物网站建设的目的上海科技网络公司
  • 电商网页设计网站二维码链接生成器在线
  • 美橙互联建站网站被截止网络运营商
  • 有没有专门做设计的网站cn域名做犯法网站
  • 安庆网站建设推荐安徽秒搜科技平台推广精准客源
  • 我做的网站有时打开很慢什么原因呢珍爱网建设网站的目的
  • 返利网一类的网站怎么做网站类网站怎么做
  • 紫搜科技建站wordpress安装到网站
  • 怎么做网站建设的pptwordpress简约主题带用户
  • 新建网站wordpress密码阅读
  • ppt做杂志模板下载网站有哪些建设网站要多久的时间
  • 恐怖网站代码网站设计的优点
  • 英国做deal的网站广告推广平台哪个好
  • 做运营需要知道素材网站如何实现网站建设服务
  • 做数据结构基础的网站农家乐网站模板
  • 查询网站域名备案汕头公关公司
  • 设计网站公司有哪些启东建设网站
  • 长沙网站优化页面湖南省建设工程造价管理总站网站
  • php网站建设案例教程wordpress 如何仿站
  • 英语网站建设费用网站建设 提案 框架
  • 青岛网站定制多少钱权4网站怎么做
  • 五莲县城乡建设局网站首页用别人公司名字做网站违法么