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

大学生做网站兼职免费刷粉网站推广

大学生做网站兼职,免费刷粉网站推广,重庆做商城网站,网站的设计 改版 更新目录 FutureTask简介 FutureTask的基本使用 FutureTask的应用场景 FutureTask简介 FutureTask是Java中的一个类#xff0c;用于表示可获取结果的异步任务。它实现了java.util.concurrent.Future接口#xff0c;提供了启动和取消异步任务、查询任务是否已完成以及获取最终…目录 FutureTask简介 FutureTask的基本使用 FutureTask的应用场景 FutureTask简介 FutureTask是Java中的一个类用于表示可获取结果的异步任务。它实现了java.util.concurrent.Future接口提供了启动和取消异步任务、查询任务是否已完成以及获取最终结果的方法。通过调用get()方法可以获取异步任务的结果但会阻塞当前线程直至任务执行结束。一旦任务执行结束任务不能重新启动或取消除非调用runAndReset()方法。在FutureTask的源码中定义了多种状态包括 private static final int NEW 0; private static final int COMPLETING 1; private static final int NORMAL 2; private static final int EXCEPTIONAL 3; private static final int CANCELLED 4; private static final int INTERRUPTING 5; private static final int INTERRUPTED 6;根据FutureTask.run()方法的执行的时机FutureTask分为了3种状态 1、未启动状态指的是在创建FutureTask后但尚未执行FutureTask.run()方法之前FutureTask处于未启动状态。 2、已启动状态指的是FutureTask.run()方法正在被执行的过程中此时FutureTask处于已启动状态。 3、已完成状态包括了三种情况 FutureTask.run()方法执行结束调用FutureTask.cancel(…)方法取消任务在执行任务期间抛出异常。 以上三种情况都属于FutureTask的已完成状态。 对于FutureTask的get()方法和cancel()方法它们在不同状态下的行为总结如下 1、get方法 当FutureTask处于未启动或已启动状态时执行FutureTask.get()方法将导致调用线程阻塞直到任务执行完成并返回结果。如果FutureTask处于已完成状态调用FutureTask.get()方法将立即返回结果或者抛出异常。 2、cancel方法 当FutureTask处于未启动状态时执行FutureTask.cancel()方法将任务标记为已取消但不会影响当前未启动的任务。当FutureTask处于已启动状态时执行FutureTask.cancel(true)方法将以中断线程的方式来阻止任务继续进行如果执行FutureTask.cancel(false)将不会对正在执行任务的线程有任何影响任务会继续执行直至结束。当FutureTask处于已完成状态时执行FutureTask.cancel(…)方法将返回false表示无法取消已经完成的任务。 FutureTask的基本使用 FutureTask除了实现了Future接口还实现了Runnable接口这使得它既可以作为一个异步任务也可以作为一个可执行的任务被线程执行。因此它可以交给Executor执行也可以由调用的线程直接执行FutureTask.run()。另外通过ExecutorService的submit()方法也可以返回一个FutureTask对象然后可以通过FutureTask.get()或者FutureTask.cancel方法获取结果或取消任务的执行。 以下是一个简单的示例演示了如何使用FutureTask来实现多线程任务的协调和管理 import java.util.concurrent.*;public class main {public static void main(String[] args) {// 创建一个FutureTask对象FutureTaskInteger futureTask new FutureTask(() - {// 模拟一个耗时的任务这里使用Thread.sleep来模拟Thread.sleep(2000);return 42; // 返回结果});// 创建一个线程池ExecutorService executor Executors.newFixedThreadPool(1);// 使用线程池执行FutureTaskexecutor.execute(futureTask);// 在主线程中可以做一些其他的事情try {// 获取FutureTask的结果如果任务还未完成则会阻塞当前线程直到任务完成int result futureTask.get();System.out.println(任务执行结果 result);} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}// 关闭线程池executor.shutdown();} }在这个示例中我们创建了一个FutureTask对象来执行一个耗时的任务然后将它交给线程池来执行。在主线程中我们可以做一些其他的事情然后通过futureTask.get()方法来获取任务的执行结果。如果任务还未完成get()方法会阻塞当前线程直到任务完成。 这个示例展示了如何使用FutureTask来实现异步任务的执行和结果获取同时也展示了使用ExecutorService来执行线程任务并在任务完成后关闭线程池。 FutureTask的应用场景 在实际应用中FutureTask通常用于以下场景 需要等待其他线程执行完毕后再继续执行通过FutureTask可以将需要等待的任务封装起来然后在需要等待的地方调用其get()方法当前线程就会阻塞直到任务执行完毕并返回结果。多个线程执行同一个任务的控制可以使用FutureTask来保证多个线程对同一个任务的执行是有序的例如只允许一个线程执行任务其他线程需要等待任务执行完毕后才能继续。 总的来说FutureTask提供了一种方便的方式来管理异步任务的执行和获取结果同时也可以用于多线程任务的协调与控制。当需要在多线程环境下进行任务调度和管理时FutureTask是一个非常有用的工具。
http://www.yutouwan.com/news/16868/

相关文章:

  • 动易网站 青春安防网站模板下载
  • 手机视频制作软件哈尔滨网站优化方式
  • 类似凡科网的网站朝阳网站建设 高碑店
  • wordpress做出的网站手机开发者选项怎么设置手机流畅
  • 电子商务网站建设与管理实训心得网站的tdk指的是什么意思
  • 景区网站建设策划网站开发学些什么软件
  • jsp做的知名网站一般网站图片尺寸
  • 营销型企业网站优化wordpress支付宝扫码支付宝
  • 网站如何做分站东莞市塘厦镇
  • 公司网站备案信息查询newsplus wordpress
  • 网站关键词热度asp网站有哪些
  • 如何免费注册网站平台建筑论坛网站
  • 平顶山公司网站建设wordpress用户注册打文章
  • 黔东南企业网站建设温州网站建设策划方案
  • 网站建设使用情况wordpress 小工具 插件
  • 公众号网站怎么做网站做电商资质
  • 网站建设对企业影响有多大专业建站的网站
  • 做响应式网站的廊坊网站建设报价
  • 如何快速做一个网站企业网站建设方案详细方案
  • 网站建设需要哪些人销售型网站建设基本要素
  • 如何免费制作一个公司网站百度舆情监测平台
  • 二级域名建立网站微商城运营
  • 利于优化的网站模板计算机一级网页制作教程
  • 网站模板源文件app开发过程中的困难
  • 做植物提取物的专业网站中国网上购物网站
  • 网站设计制作是什么wordpress增加幻灯片
  • php网站建设流程图唐山建设网站的网站
  • 江苏省建设安全协会网站app开发价格参考
  • 重庆靓号网站建设网站建设备案
  • 做网站的颜色搭配网站兼职做计划赚小钱