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

海口网站建设网页制作公司做调查问卷能挣钱的网站

海口网站建设网页制作公司,做调查问卷能挣钱的网站,建设银行网站预约取款,wordpress博客模板查询大家好,我是烤鸭#xff1a;今天给大家说的是多线程并发的异步监听的情况。这里不得不说一下CompletableFuture这个类#xff0c;普通我们执行多线程的时候只需要另外启动一条线程。 说一下线程的3种方式#xff1a;extends Thread#xff0c;implements Runnable#xff…大家好,我是烤鸭今天给大家说的是多线程并发的异步监听的情况。这里不得不说一下CompletableFuture这个类普通我们执行多线程的时候只需要另外启动一条线程。 说一下线程的3种方式extends Threadimplements Runnableimplements Callable。同步的实现方式有很多。这里贴一下我的。这个handler是可以注入其他的比如service或者dao完成业务逻辑我这里是注入的redis。 package com.mys.my.wechat.handler;import com.mys.my.wechat.config.redis.RedisClient; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.Executor;Service(musicHandler) public class MusicHandler {public static Log logger LogFactory.getLog(MusicHandler.class);public String redisString;public String openId;Autowiredprivate RedisClient redisClient;Autowiredprivate Executor taskAsyncPool;public void doAllHandler() {try {taskAsyncPool.execute(new Runnable() {Overridepublic void run() {logger.info(xiami 任务启动);Date time new Date(); // SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); // String re_StrTime sdf.format(time);//过期时间1小时redisClient.set(xiamiMusic:openId,redisString,60*60);}});} catch (Exception e) {e.printStackTrace();}} } 调用//存redismusicHandler.redisString toJson;musicHandler.openId openId;musicHandler.doAllMusicHandler(); 以上就是同步调用但是这样只是执行你无法监听结果。 我现在说一下场景烧水的同时洗衣机洗衣服电脑下载手机充电我们生活中也会有同时干几件事的情况而需求是这几件事都干完了我才能出门多线程确实能执行但是怎么监听结果呢。 以上也许可以说时间是可以预测的。但是具体的业务场景如果需要你去调用4个接口而他们之间的没有任何影响但是又必须4个接口都执行完才能返回数据。这样如果实现多线程的异步监听呢最常用的就是爬虫我想同时抓取几个网站或者几个网页的数据如果是单线程效率很低。多线程又必须保证每条线程完成抓取并返回数据。以下是一个小例子。 用CompletableFuture代码如下 package com.mys.my.wechat.service.impl;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.concurrent.CompletableFuture;final Integer res 0;final ArrayListInteger integers new ArrayList();CompletableFutureInteger completableFuture1 CompletableFuture.supplyAsync(() - {//模拟执行耗时任务System.out.println(task 1 doing...);try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}//返回结果return 1;});//注册完成事件completableFuture1.thenAccept(result - {integers.add(1);});CompletableFutureInteger completableFuture2 CompletableFuture.supplyAsync(() - {//模拟执行耗时任务System.out.println(task 2 doing...);try {Thread.sleep(2000);} catch (Exception e) {e.printStackTrace();}//返回结果return 1;});//注册完成事件completableFuture2.thenAccept(result - {integers.add(1);});CompletableFutureInteger completableFuture3 CompletableFuture.supplyAsync(() - {//模拟执行耗时任务System.out.println(task 3 doing...);try {Thread.sleep(3000);} catch (Exception e) {e.printStackTrace();}//返回结果return 1;});//注册完成事件completableFuture3.thenAccept(result - {integers.add(1);});while(true){try {Thread.sleep(1000);if(integers.size() 3){System.out.println(done);break;}System.out.println(s:integers.size());} catch (InterruptedException e) {e.printStackTrace();}}}这里我们可以看到主线程一直在监听其他新开启的3个线程如果他们执行完毕就可以返回数据 如果他们有没执行完的主线程就一直等。这样就分工明确了主线程的任务就是监视其他是否完毕而同时开启3条线程执行速度也会很快。 这只是一个demo和想法实现欢迎交流。
http://www.zqtcl.cn/news/714731/

相关文章:

  • 开个小网站要怎么做南宁seo外包服务商
  • 济宁做网站的企业app网站开发学习
  • 哪个网站可以做危险化学品供求html静态网站作品
  • 豪圣建设项目管理网站创建网站的视频
  • 网站做接口自己做的网站只能用谷歌浏览器打开
  • 建设网站具体步骤python 做 网站
  • 网站源代码怎么上传wordpress标题字体大小
  • 营销型网站哪家好网页设计一张多少钱
  • 怎么搭建购物网站山东德州网站建设
  • 网站 404 错误页面是否自动跳转太原网站建设王道下拉惠
  • 美仑-专门做服装的网站淘宝详情页制作
  • 网站商城制作策划公司组织结构图
  • 商务网站建设教程企网
  • 北京做网站推广多少钱丽水网站建设公司排名
  • 淄博网站关键词优化安丘网站建设公司
  • 教育建设网站wordpress 创建模板文件
  • 门户网站开发视频教学百度关键词怎么刷上去
  • 做网站搞流量挂联盟广告变现新媒体营销心得体会
  • 网站做信息流网站如何做担保交易平台
  • php网站后台访问统计分析互联网营销师题库
  • 提供建站服务的网络公司的比较注册网站域名后免费建站
  • 颍上建设网站长江商学院 网站建设
  • 做酒店销售上哪个网站好东莞出租车公司
  • 如何在记事本中做网站链接好看的wordpress文章模板下载
  • 做二手衣服的网站有哪些安县移动网站建设
  • 学习资料黄页网站免费美丽乡村 网站建设
  • 仲恺住房和城乡建设局网站上海wordpress
  • 网站整体结构国内现货正规交易平台
  • 正规的网站制作开发平度建设网站
  • 建筑网站在哪里找松岗网站