摘要: Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newS 阅读全文
posted @ 2017-03-05 22:01 欢歌911 阅读(683) 评论(0) 推荐(0) 编辑
摘要: 非阻塞队列:ConcurrentLinkedQueue ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。 阻塞队列:BlockingQue 阅读全文
posted @ 2017-03-05 21:54 欢歌911 阅读(3800) 评论(0) 推荐(0) 编辑
摘要: Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release 阅读全文
posted @ 2017-03-05 21:45 欢歌911 阅读(314) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet 适用于读多写少的场景 ConcurrentLinkedQueue 原理可参考 http://www.cnblogs.com/studyLog-share/p/5283646.html 阅读全文
posted @ 2017-03-05 21:37 欢歌911 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 第一种:懒汉模式 这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。 第二种:饿汉模式 这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化,虽然导致类装载的原因有很多 阅读全文
posted @ 2017-03-05 21:28 欢歌911 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。 阅读全文
posted @ 2017-03-05 21:02 欢歌911 阅读(170) 评论(0) 推荐(0) 编辑
摘要: Future模式 阅读全文
posted @ 2017-03-05 10:40 欢歌911 阅读(433) 评论(0) 推荐(0) 编辑