电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

va多线程开发技巧

va多线程开发技巧_第1页
1/6
va多线程开发技巧_第2页
2/6
va多线程开发技巧_第3页
3/6
Java 多线程开发技巧 Java 多线程开发技巧 很多开发者谈到 Java 多线程开发,仅仅停留在 new Thread(...).start()或直接使用Executor 框架这个层面,对于线程的管理和控制却不够深化,通过读《Java 并发编程实践》了解到了很多不为我知但又非常重要的细节,今日整理如下。 不应用线程池的缺点 有些开发者图省事,遇到需要多线程处理的地方,直接 new Thread(...).start(),对于一般场景是没问题的,但假如是在并发请求很高的情况下,就会有些隐患: 新建线程的开销。线程虽然比进程要轻量许多,但对于 JVM 来说,新建一个线程的代价还是挺大的,决不同于新建一个对象 资源消耗量。没有一个池来限制线程的数量,会导致线程的数量直接取决于应用的并发量,这样有潜在的线程数据巨大的可能,那么资源消耗量将是巨大的 稳定性。当线程数量超过系统资源所能承受的程度,稳定性就会成问题 制定执行策略 在每个需要多线程处理的地方,不管并发量有多大,需要考虑线程的执行策略 任务以什么顺序执行 可以有多少个任何并发执行 可以有多少个任务进入等待执行队列 系统过载的时候,应该放弃哪些任务?如何通知到应用程序? 一个任务的执行前后应该做什么处理 线程池的类型 不管是通过 Executors 创建线程池,还是通过 Spring 来管理,都得清楚知道有哪几种线程池: FixedThreadPool:定长线程池,提交任务时创建线程,直到池的最大容量,假如有线程非预期结束,会补充新线程 CachedThreadPool:可变线程池,它犹如一个弹簧,假如没有任务需求时,它回收空闲线程,假如需求增加,则按需增加线程,不对池的大小做限制 SingleThreadExecutor:单线程。处理不过来的任务会进入 FIFO 队列等待执行 SecheduledThreadPool:周期性线程池。支持执行周期性线程任务 其实,这些不同类型的线程池都是通过构建一个 ThreadPoolExecutor 来完成的,所不同的是 corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,threadFactory 这 么几个参数。具体可以参见 JDK DOC。 线程池饱和策略 由以上线程池类型可知,除了 CachedThreadPool 其他线程池都有饱和的可能,当饱和以后就需要相应的策略处理请求线程的任 务,ThreadPoolExecutor 实行的方式通过队列来存储这些任务,当然会根据池类型不同选择不同的队列,比如 FixedThreadPool 和SingleThreadExecutor 默认采纳的是无限长度的 LinkedBlockingQueue。但从...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

va多线程开发技巧

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部