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

上海 专业网站设计 母婴类洋洋点建站

上海 专业网站设计 母婴类,洋洋点建站,渠道推广费用咨询,网站关键词是什么有几种不同的方式来将任务委托给 ExecutorService 去执行#xff1a; execute(Runnable)submit(Runnable)submit(Callable)invokeAny(…)invokeAll(…)execute(Runnable) execute(Runnable) 方法要求一个 java.lang.Runnable 对象#xff0c;然后对它进行异步执行。以下是使用… 有几种不同的方式来将任务委托给 ExecutorService 去执行 execute(Runnable)submit(Runnable)submit(Callable)invokeAny(…)invokeAll(…)execute(Runnable) execute(Runnable) 方法要求一个 java.lang.Runnable 对象然后对它进行异步执行。以下是使用 ExecutorService 执行一个 Runnable 的示例 ExecutorService executorService Executors.newSingleThreadExecutor(); executorService.execute(new Runnable() { public void run() { System.out.println(Asynchronous task); } }); executorService.shutdown(); 没有办法得知被执行的 Runnable 的执行结果。如果有需要的话你得使用一个 Callable(以下将做介绍)。   submit(Runnable) submit(Runnable) 方法也要求一个 Runnable 实现类但它返回一个 Future 对象。这个 Future 对象可以用来检查 Runnable 是否已经执行完毕。 以下是 ExecutorService submit() 示例 Future future executorService.submit(new Runnable() { public void run() { System.out.println(Asynchronous task); } }); future.get(); //returns null if the task has finished correctly.   submit(Callable) submit(Callable) 方法类似于 submit(Runnable) 方法除了它所要求的参数类型之外。Callable 实例除了它的 call() 方法能够返回一个结果之外和一个 Runnable 很相像。Runnable.run() 不能够返回一个结果。 Callable 的结果可以通过 submit(Callable) 方法返回的 Future 对象进行获取。以下是一个 ExecutorService Callable 示例 import java.util.concurrent.*;public class Main {public static void main(String[] args) {ExecutorService executorService Executors.newSingleThreadExecutor();Future future executorService.submit(new Runnable() {public void run() {try {TimeUnit.SECONDS.sleep(4);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Asynchronous task);}});System.out.println(主方法。。。。);try {System.out.println(future.get()); //returns null if the task has finished correctly.} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}} } 结果 主方法。。。。Asynchronous tasknull future.get()会等待子线程结束后打印出信息。 submit(Callable) submit(Callable) 方法类似于 submit(Runnable) 方法除了它所要求的参数类型之外。Callable 实例除了它的 call() 方法能够返回一个结果之外和一个 Runnable 很相像。Runnable.run() 不能够返回一个结果。 Callable 的结果可以通过 submit(Callable) 方法返回的 Future 对象进行获取。以下是一个 ExecutorService Callable 示例 import java.util.concurrent.*;public class Main {public static void main(String[] args) {ExecutorService executorService Executors.newSingleThreadExecutor();Future future executorService.submit(new Callable(){public Object call() throws Exception {TimeUnit.SECONDS.sleep(3);System.out.println(Asynchronous Callable);return Callable Result;}});System.out.println(主方法。。。。);try {System.out.println(future.get()); //returns null if the task has finished correctly.} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}} } 结果 主方法。。。。Asynchronous CallableCallable Result future.get()会等待子线程结束后打印出信息 invokeAll() invokeAll() 方法将调用你在集合中传给 ExecutorService 的所有 Callable 对象。invokeAll() 返回一系列的 Future 对象通过它们你可以获取每个 Callable 的执行结果。 记住一个任务可能会由于一个异常而结束因此它可能没有 “成功”。无法通过一个 Future 对象来告知我们是两种结束中的哪一种。 以下是一个代码示例 import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.*;public class Main {public static void main(String[] args) {ExecutorService executorService Executors.newSingleThreadExecutor();SetCallableString callables new HashSetCallableString();callables.add(new CallableString() {public String call() throws Exception {System.out.println(Thread.currentThread().getName(),Task 1);return Task 1;}});callables.add(new CallableString() {public String call() throws Exception {System.out.println(Thread.currentThread().getName(),Task 2);return Task 2;}});callables.add(new CallableString() {public String call() throws Exception {System.out.println(Thread.currentThread().getName(),Task 3);return Task 3;}});callables.add(new CallableString() {public String call() throws Exception {System.out.println(Thread.currentThread().getName(),Task 4);return Task 4;}});callables.add(new CallableString() {public String call() throws Exception {System.out.println(Thread.currentThread().getName(),Task 5);return Task 5;}});try {ListFutureString futures executorService.invokeAll(callables);for(FutureString future : futures){System.out.println(future.get future.get());}} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}executorService.shutdown();} }   结果 pool-1-thread-1,Task 2pool-1-thread-1,Task 5pool-1-thread-1,Task 4pool-1-thread-1,Task 1pool-1-thread-1,Task 3future.get Task 2future.get Task 5future.get Task 4future.get Task 1future.get Task 3   ExecutorService 关闭 使用完 ExecutorService 之后你应该将其关闭以使其中的线程不再运行。 比如如果你的应用是通过一个 main() 方法启动的之后 main 方法退出了你的应用如果你的应用有一个活动的 ExexutorService 它将还会保持运行。ExecutorService 里的活动线程阻止了 JVM 的关闭。 要终止 ExecutorService 里的线程你需要调用 ExecutorService 的 shutdown() 方法。ExecutorService 并不会立即关闭但它将不再接受新的任务而且一旦所有线程都完成了当前任务的时候ExecutorService 将会关闭。在 shutdown() 被调用之前所有提交给 ExecutorService 的任务都被执行。 如果你想要立即关闭 ExecutorService你可以调用 shutdownNow() 方法。这样会立即尝试停止所有执行中的任务并忽略掉那些已提交但尚未开始处理的任务。无法担保执行任务的正确执行。可能它们被停止了也可能已经执行结束。     转载于:https://www.cnblogs.com/qjm201000/p/10156491.html
http://www.zqtcl.cn/news/897783/

相关文章:

  • 企业网站建设的重要性和必要性深圳设计网站排行
  • 山西省网站建设河南省考生服务平台官网
  • 做水产的都用什么网站wordpress 前端登陆
  • 商务网站建设网站开发一个软件开发的流程
  • 网站建设电脑和手机有区别吗公众号登录微信入口
  • 天津市建设监理协会网站三亚网络网站建设
  • 义乌进货网平台北京网优化seo优化公司
  • 在网站上放广告网站建设流程效果
  • 腾讯云学生机做网站济南网站改版
  • 开封市做网站的公司wordpress无法映射
  • 网站构建工具wordpress 主题授权
  • 大型网站开发 赚钱宁夏网站建设优化
  • 通过ip访问网站需要怎么做博客的网站页面设计
  • 高明做网站软件开发工程师是前端还是后端
  • 利用html5 监控网站性能如何能快速搜到新做网站链接
  • 做网站需要看那几点seo是什么职业岗位
  • 做游戏网站需要哪些许可100个免费推广网站下载
  • 网站管理系统是什么马鞍山网站建设制作公司
  • 设计学网站网络工程专业毕业生设计
  • 成都网站建设有名的国外优质设计网站
  • seo基础培训教程seo百度关键词优化软件
  • 西安响应式网站青岛网站制作哪里有
  • 政务服务网站建设合肥seo排名扣费
  • 郑州做网站的大公司无锡网站程序
  • 打开网站是空白页面营销型网站建设应该考虑哪些因素
  • 做网站开麻烦吗个人网站备案网站名称
  • 瑞诺国际做外贸网站好吗网站端和移动端分开建设域名一样么
  • 如何网站点击率网站程序开发技术
  • 深圳网站建设售后服务怎样.net网站开发简介
  • 光谷软件园 网站建设中国国家数据统计网