设为首页 收藏本站
查看: 1029|回复: 0

[经验分享] JAVA线程池管理及分布式HADOOP调度框架搭建

[复制链接]

尚未签到

发表于 2018-10-31 13:41:20 | 显示全部楼层 |阅读模式
  平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头。怎么做一套简便的线程开发模式框架让大家从单线程开发快速转入多线程开发,这确实是个比较难搞的工程。
  那具体什么是线程呢?首先看看进程是什么,进程就是系统中执行的一个程序,这个程序可以使用内存、处理器、文件系统等相关资源。例如 QQ软件、eclipse、tomcat等就是一个exe程序,运行启动起来就是一个进程。为什么需要多线程?如果每个进程都是单独处理一件事情不能多个任务同时处理,比如我们打开qq只能和一个人聊天,我们用eclipse开发代码的时候不能编译代码,我们请求tomcat服务时只能服务一个用户请求,那我想我们还在原始社会。多线程的目的就是让一个进程能够同时处理多件事情或者请求。比如现在我们使用的QQ软件可以同时和多个人聊天,我们用eclipse开发代码时还可以编译代码,tomcat可以同时服务多个用户请求。
  线程这么多好处,怎么把单进程程序变成多线程程序呢?不同的语言有不同的实现,这里说下java语言的实现多线程的两种方式:扩展java.lang.Thread类、实现java.lang.Runnable接口。
  先看个例子,假设有100个数据需要分发并且计算。看下单线程的处理速度:
1  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
packagethread;  importjava.util.Vector;
  publicclass OneMain {
  publicstaticvoid main(String[] args)throwsInterruptedException{
  Vector list =new Vector(100);
  for(int i =0; i 0){
  int val = list.remove(0);
  Thread. sleep(100);//模拟处理
  System. out.println(val);
  }
  long end =System.currentTimeMillis();
  System. out.println("消耗 "+(end - start)+" ms");
  }
  // 消耗 10063 ms
  }
  再看一下多线程的处理速度,采用了10个线程分别处理:
1  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
packagethread;  importjava.util.Vector;
  importjava.util.concurrent.CountDownLatch;
  publicclass MultiThread extendsThread{
  static Vector list =new Vector(100);
  static CountDownLatch count =new CountDownLatch(10);
  publicvoid run(){
  while(list.size()>0){
  try{
  int val = list.remove(0);
  System.out.println(val);
  Thread.sleep(100);//模拟处理
  }catch(Exception e){
  // 可能数组越界,这个地方只是为了说明问题,忽略错误
  }
  }
  count.countDown();// 删除成功减一
  }
  publicstaticvoid main(String[] args)throwsInterruptedException{
  for(int i =0; i

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629033-1-1.html 上篇帖子: hadoop Partitioner 分区 下篇帖子: 大数据时代,你不得不知的Hadoop使用技巧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表