线程
文章平均质量分 80
Mr_蜗牛
专业打杂
展开
-
Queue
1、Queue 两套实现:ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论是哪种,都是继承了Queue 1、ConcurrentLinkedQueue 它是一个适合于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue。它是原创 2017-01-03 21:43:15 · 2513 阅读 · 0 评论 -
线程基础知识笔记
1、线程安全 1.1、线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能保持正确的行为,那么这个类(对象或方法)是线程安全的。 1.2、synchronized:可以在任意对象及方法上加上锁,而加锁的这段代码成为‘互斥区’或‘临界区’。 举一个简单例子 import java.util.concurrent.atomic.AtomicInteger; publi原创 2016-12-25 11:50:16 · 296 阅读 · 0 评论 -
单例&多线程
单例最常见的模式为:懒汉式和饿汉式,懒汉式在调用方法的时候才去实例化对象,饿汉式则是直接实例化对象。在多线程模式中,考虑到性能和线程安全,我们一般选择static inner class或者double check instance的单例模式。在性能提高的同时保证了线程安全 static inner class(静态内部类的形式) public class Singletion {原创 2016-12-25 23:18:52 · 323 阅读 · 0 评论 -
同步类容器和并发类容器
同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作,复合类操作 如:迭代(反复访问原始,遍历容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发得修改容器的时候可以会表现出意外的行为,最经典的就是 ConcurrentModificationException ,原因是当容易迭代过程中,被并发的修改了内容。这是由于早期迭代器设计原创 2016-12-26 21:29:05 · 1169 阅读 · 0 评论 -
锁
在java多线程中,我们知道synchronized关键字可以实现线程之间的同步互斥工作。我们也可以用Lock来完成这个工作,这里有2种锁:重入锁和读写锁,他们有嗅探锁定、多路分支的功能。 一、重入锁 1、重入锁需要在代码块中加上锁定,但最后一定要记得释放锁定,不然会造成锁永远无法释放,其他线程进不来的结果。 public class UseReentrantLock { privat原创 2017-01-14 10:24:11 · 262 阅读 · 0 评论 -
Executor框架简介
为了更好地控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效地进行线程控制,他们都在java.util.concurrent包中,是JDK并发包的核心,其中有一个比较重要的类:Executors,它扮演线程工厂的角色,我们通过这类可以创建特点功能的线程池。 Executors创建线程池方法: newFixedThreadExecutor()方法,该方法返回一个固定原创 2017-01-04 15:01:03 · 267 阅读 · 0 评论