使用Java开发高性能网站(三)
来源:互联网 发布:win2008 mac 绑定 编辑:程序博客网 时间:2024/06/05 14:56
在高并发环境下建议开发者使用JDK中自带的并发包(java.util.concurrent),在JDK1.5以后使用java.util.concurrent下的工具类可以简化多线程开发,在java.util.concurrent的工具中主要分为以下几个主要部分:
1.线程池,线程池的接口(Executor、ExecutorService)与实现类(ThreadPoolExecutor、ScheduledThreadPoolExecutor),利用jdk自带的线程池框架可以管理任务的排队和安排,并允许受控制的关闭。因此运行一个线程需要消耗系统CPU资源,而创建、结束一个线程也对系统CPU资源有开销,使用线程池不仅仅可以有效的管理多线程的使用,还是可以提高线程的运行效率。
2.本地队列,提供了高效的、可伸缩的、线程安全的非阻塞FIFO队列。java.util,concurrent中的五个实现都支持扩展的BlockingQueue接口,该接口定义了put和take的阻塞版本:LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、PriorityBlockingQueue和DelayQueue。这些不同的类覆盖了生产者-使用者、消息传递、并行任务执行和相关并发设计和大多数常见使用的上下文。
3.同步器,四个类可协助实现常见的专用同步语句。Semaphore 是一个经典的并发工具。CountDownLatch 是一个极其简单但又极其常用的实用工具,用于在保持给定数目的信号、事件或条件前阻塞执行。CyclicBarrier 是一个可重置的多路同步点,在某些并行编程风格中很有用。Exchanger 允许两个线程在 collection 点交换对象,它在多流水线设计中是有用的。
4.并发包 Collection,此包还提供了设计用于多线程上下文中的 Collection 实现:ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、CopyOnWriteArrayList和CopyOnWriteArratSet。当期望许多线程访问一个给定collection时,ConcurrentHashMap通常优于同步的HashMap,ConcurrentSkipListMap通常优于同步的TreeMap。当期望的读数和遍历远远大于列表的更新数时,CopyOnWriteArrayList优于同步的ArrayList。
队列
关于队列可以分为:本地的队列 和 分布式队列 2类
本地队列:一般常见的用于非及时性的数据批量写入,可以将获取到数据缓存在一个数组中等达到一定数量的时候进行批量的一次写入,可以使用BlockingQueue或者List/Map来实现。相关资料:Sun Java API.
分布式队列:一般作为消息中间件,构建分布式环境下子系统与子系统之间通信的桥梁,JEE环境中使用最多的就是Apache的ActiveMQ和Sun公司的OpenMQ。
轻量级的MQ中间件:
Kestrel和Redis(Ref http://www.javabloger.com/article/mq-kestrel-redis-for-java.html),最近又听说LinkedIn的搜索技术团队推出了一个MQ产品-kaukaf(Ref http://sna-projects.com/kafka ),对此保持关注。
相关资料:
1.ActiveMQ http://activemq.apache.org/getting-started.html
2.OpenMQ http://mq.java.net/about.html
3.Kafka http://sna-projects.com/kafka
4.JMS文章 http://www.javabloger.com/article/category/jms
- 使用Java开发高性能网站(三)
- 使用Java开发高性能网站(一)
- 使用Java开发高性能网站(二)
- 使用Java开发高性能网站(四)
- java开发高性能网站(高并发)
- 安全高性能网站搭建(三)
- 高性能网站开发
- 高性能网站开发
- 使用Java开发高性能网站需要关注的那些事儿
- 使用Java开发高性能网站需要关注的那些事儿
- 使用Java开发高性能网站需要关注的那些事儿
- 使用Java开发高性能网站需要关注的那些事儿
- 使用Java开发高性能网站需要关注的那些事儿
- 使用Java开发高性能网站需要关注的那些事儿
- java学习-如何用Java进行高性能网站开发
- 使用JAVA开发高并发网站
- Java Web高性能开发--网站优化实战
- 构建Java开发高性能网站需要关注的事儿
- ubuntu 使用securecrt vi编辑出现的问题
- CH10 面向对象思想
- hibernate总结
- zurmo(六)-表单页面
- android 应用中短信发送
- 使用Java开发高性能网站(三)
- [黄金分割比] 黄金分割法求单峰函数最值
- B-树详细分析及B树B-树B+树B*树概念
- SpringMVC 整合 百度编辑器UEditor
- 基于centos7的Solr5.5安装配置
- 自连接和视图
- [AHK]字串处理技巧
- 使用struts、hibernate、spring进行框架整合流程详细说明(完整版)附:开发规范
- NOIP2016:pencil