高并发架构
文章平均质量分 65
jiuxiao199132
这个作者很懒,什么都没留下…
展开
-
实战Java高并发程序设计-01历史概述
摩尔定律的失败摩尔定律是由英特尔创始人之一的戈登*摩尔提出来的,内容为:集成电路上可容纳的电晶体数目,大约每隔24个月就会增加一倍,这是芯片性能会提高一倍。 说的直白一点就是没24个月,我们的计算机性能就能翻一番。 但是摩尔定律并不是一种自然法则或者物理定律,它只是基于人为观测数据后,对未来的预测。按照预测,我们的计算机性能会不断增加。 摩尔定律的有效性超过半个世纪,然而2004年,intel原创 2017-06-06 16:00:27 · 355 阅读 · 0 评论 -
实战Java高并发程序设计-04 Java并发包锁和其他工具的使用
并发包(java.util.concurrent)为了更好的支持并发程序,jdk内部提供了大量实用的API和框架同步控制(锁)锁(lock)可以完全代替关键字synchronize. jdk中锁是一个接口,提供了三个实现类,读锁,写锁,重入锁. 读写锁读写锁拆成读锁和写锁来理解。读锁可以共享,多个线程可以同时拥有读锁,但是写锁却只能只有一个线程拥有,而且获取写锁的时原创 2017-06-30 16:04:38 · 341 阅读 · 0 评论 -
实战Java高并发程序设计-02几个重要概念
同步与异步概念同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用完成并返回后,才能继续后续的工作。异步方法调用更像一个消息传递,被调用之后,调用者马上开始后续工作。而异步方法通常在另外一个线程中“真实”地执行。整个过程不会阻碍调用者的工作,如果异步调用需要返回结果,那么当这个异步调用真实完成时,则会通知调用者。举例说明同步: 去超市买食物,通原创 2017-06-22 16:54:18 · 370 阅读 · 0 评论 -
实战Java高并发程序设计-05 Java并发包线程池
概念线程的创建与销毁都需要销毁资源,为了避免频繁的创建与销毁线程,可以让创建的线程进行复用。类似数据库连接池的概念,Java中的线程池Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并原创 2017-07-04 11:12:51 · 397 阅读 · 0 评论 -
实战Java高并发程序设计-07原子操作
悲观与乐观对于并发而言,锁是一种悲观策略。总是假设每一次临界区操作都会产生冲突,因此,必须每次操作都小心翼翼。如果有多个线程访问临界区资源,就牺牲性能让线程进行等待,使得线程阻塞。而无锁是一种乐观的策略,它会假设对资源的访问时没有冲突的,不需要等待,所有线程都可用不停顿的执行。那么在遇到冲突的情况下采用一种叫做比较交换技术(CAS Compare And Swap)来鉴别线程冲突,一旦检查到冲原创 2017-07-14 14:08:22 · 367 阅读 · 0 评论 -
实战Java高并发程序设计-03 Java线程
概念线程的生命周期线程的状态定义在 java.lang.Thread.State 中 NEW创建状态并未执行,通过start()方法开始线程执行,进入RUNNABLERUNNABLE运行状态BLOCKED阻塞状态,如果在执行的过程中遇到了synchronize 关键字标注的同步块,就会进入阻塞状态WAITING等待状态,表示线程进入了等待状态,直到notify()方法执行通知后,线程继续进入运行状态原创 2017-06-23 11:47:25 · 351 阅读 · 0 评论 -
实战Java高并发程序设计-06 Java并发包并发集合
ConcurrentHashMap这是一个高效的并发hashmap,可以理解为一个线程安全的hashmap。CopyOnWriteArrayList这是一个线程安全的List,在读多写少的场合,这个list性能非常好,远远好于Vector.ConcurrentLinkedQueue高效的并发队列,使用链表实现,可以看做一个线程安全的LinkedListBlockingQueue这是一个接口,JDK内原创 2017-07-10 11:40:41 · 333 阅读 · 0 评论