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

网站关键字优化公司/专业网站快速

网站关键字优化公司,专业网站快速,新手小白学编程,亚洲永久精品ww47香蕉图片相信有多年编程经验的老鸟都明白,同步与异步的区别,这里只谈异步的使用,不谈为何使用异步,以及何时使用异步,好,让咱们步入正题。 谈到异步就不能不说起多线程,多线程的含义举个现实中的例子&am…

相信有多年编程经验的老鸟都明白,同步与异步的区别,这里只谈异步的使用,不谈为何使用异步,以及何时使用异步,好,让咱们步入正题。

谈到异步就不能不说起多线程,多线程的含义举个现实中的例子,很容易理解:传统的程序一般都是按照时序一步步执行的,比如:起床->穿衣服->洗脸,每一件事情完成后才去继续下一件事情;

如果这中间穿插开电视听新闻,其实是可以充分使用多线程并发的优势的,开着电视,然后去刷牙洗脸,新闻是可以继续听的,多线程说的通俗一点就是同一时间点做N件事。

对于多线程编程在CPU内核越来越多的情况下变得越来越重要,对于Java有本并发编程的圣经 - “Java并发编程实践”可以好好参读,该书作者之一就有著名的Doug Lea,相信有童鞋使用过JDK5之前的concurrent包,在JDK5之后纳入到内置包中,从此并发编程变得简单。

 

在JDK5以前,多线程编程是一件相当痛苦的事情,Thread,Runnable,还需要各种wait(),notify(),稍有差池多线程并发的引起的问题,很难定位,而且不好解决及再现;到JDK5内置并发编程包后一定程度上解决了并发编程的一些痛苦,但是相对于函数式语言(erlang,scala)那么简单的并发编程无需考虑锁,还差的实在太远。

下面是使用JDK5的java.util.concurrent包的类实现多线程并发的例子:

    
....
private static ExecutorService executorService = Executors.newFixedThreadPool(100);long start = System.currentTimeMillis(); for (int i = 0; i < 200; i++) {executorService.execute(new RequestTask()); } executorService.shutdown(); System.out.println("总耗时" + (System.currentTimeMillis() - start) + "ms."); ....
class RequestTask implements Runnable { public void run() {System.out.println("当前时间" + System.currentTimeMillis());}

 

下面是使用twitter的finagle来实现异步编程调用客户端的例子:

        long start = System.currentTimeMillis();Service<HttpRequest, HttpResponse> httpClient = ClientBuilder.safeBuild(ClientBuilder.get().codec(Http.get()).hosts("192.168.1.100:80").hostConnectionLimit(100).tcpConnectTimeout(Duration.apply(1, TimeUnit.SECONDS)).retries(2).logger(logger));HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/user/list");request.setHeader("Host", "192.168.1.100");Future<HttpResponse> futureResponse = httpClient.apply(request).addEventListener(new FutureEventListener<HttpResponse>() {public void onSuccess(HttpResponse response) {logger.info("SUCCESS: " + response.getContent().toString(CharsetUtil.UTF_8));}public void onFailure(Throwable cause) {logger.info("FAILURE: " + Throwables.getStackTraceAsString(cause));}});httpClient.close();Await.ready(futureResponse);logger.info("耗时" + (System.currentTimeMillis() - start) + "ms.");

异步编程其实相当简单,只能感叹finagle实在是太强大了,比想象中强大的多得多。

 

对于JDK7的Fork/Join还没使用过,有这方面经验的可以分享下。

转载于:https://www.cnblogs.com/javapro/p/3217724.html

http://www.jmfq.cn/news/4894813.html

相关文章:

  • 长沙建设公司网站/小程序搭建
  • 找外贸客户的网站/网络推广工作能长久吗
  • 保定建设工程信息网站/网页免费制作网站
  • 竹山县建设局网站/电商推广平台有哪些
  • 58同城石家庄网站建设/soe搜索优化
  • 百度验证网站/开发新客户的十大渠道
  • 做外贸网站特色/网络营销师是做什么的
  • 制作网站的页面设计怎么做/需要留电话号码的广告
  • 建设银行怎么在网站设置限额/百度推广价格价目表
  • 建设个普通的网站得多少钱/小程序生成平台系统
  • 网站建设如何自学/seo优化大公司排名
  • 昆山做网站需要多少钱/网络营销的模式有哪些?
  • 北京66中网站做的不怎么样呀/直通车推广怎么收费
  • 高端电商网站开发/官网关键词优化价格
  • 基金公司网站建设/杭州seo的优化
  • 人才网站开发/怎么在网上推广产品
  • 视频直播网站开发与制作/seo诊断优化专家
  • 怎么查网站的关键词/今日军事新闻头条
  • 武汉网站制作公司排名/班级优化大师下载安装
  • 各大电商购物网站转化率报表/优化网站内容
  • 服装企业营销网站建设/免费的十大免费货源网站
  • 物联网软件开发/汕头seo计费管理
  • 外贸英语怎么自学/惠州seo代理商
  • 做外贸比较好的网站/seo关键词优化技术
  • 网站备案的是空间还是域名/业务推广方式有哪些
  • 企业做网站要/百度seo排名点击器app
  • 网站模板文章资讯/海南快速seo排名优化
  • 电商网站建设思路/深圳seo公司助力网络营销飞跃
  • 网站测试方案/企业网站推广方案设计毕业设计
  • 苏州网站排名方案/模板建站的网站