![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 77
iteye_17821
这个作者很懒,什么都没留下…
展开
-
AtomicInteger原理
1 AtomicInteger特性 如果要实现自增计数器,如果使用i++实现,由于i++非原子操作,所以多线程下要添加synchronized来实现自增,由于synchronized同步性能比较差,后面会说到。java通过AtomicInteger更轻量的锁来实现多线程下的原子自增。 2 AtomicInteger原理 AtomicInteger使用硬件提供的CAS原语实现原子操...原创 2014-12-02 12:11:34 · 281 阅读 · 0 评论 -
concurrenthashmap源码分析
1 为什么有ConcurrentHashMap hashmap是非线程安全的,hashtable是线程安全的,但是所有的写和读方法都有synchronized,所以同一时间只有一个线程可以持有对象,多线程情况下锁竞争会比较激烈,严重影响性能。基于这种情况,Doug Lee大师写了一个ConcurrentHashMap类。ConcurrentHashMap是对多线程各种特性深刻理解的经典范例,学习...原创 2014-12-02 15:20:28 · 111 阅读 · 0 评论 -
volatile变量
volatile保证了2点: 1.线程的可见性。即线程B如果将变量的值做了修改,线程A能够立即看到,普通的变量做不到这一点, 因为线程的模型为: 线程A工作内存 save &load 主内存 线程B工作内存 线程C工作内存 为了保证性能,变量修改是在工作内存进行的,在工作内存中的变量值没有写入主内存之前,其他线程是不可见的, 使用volatile可以保证修改后立即写回到...2014-12-04 11:54:14 · 66 阅读 · 0 评论 -
synchronized原理和锁优化
1 synchronized原理 synchronized关键字编译后会在同步块的前后添加上montorenter和monitorexit两个字节码指令,这两个字节码指令都需要一个指向锁定和解锁对象的reference,如果指定了同步的对象reference就指向这个对象,如果修饰的是方法,如果是类方法就指向Class对象,如果是实例方法就指向这个实例。 2线程安全 2.1定义 当多线程访...2014-12-04 12:00:12 · 115 阅读 · 0 评论 -
线程池那些事儿
1 为什么要用线程池 线程也是一种对象,万事万物皆对象,线程池也就是对象池,通过将大对象池化,来达到对象复用,从而节省对象的内存开销以及对象的创建开销,设计模式中的享元模式就是将对象池化的一种模式,比较常听说的还有数据库连接池。对象池经常池化大对象和创建时间较长的对象,由于Java线程依赖于操作系统内核线程,所以线程创建需要切换到内核态,创建和销毁的消耗比较大。 另外线程属于稀缺资源...2014-12-07 21:29:06 · 78 阅读 · 0 评论 -
多线程模式之生产者-消费者模式
生产者-消费者模式为多线程之间协作提供了良好的解决方案,一般有2类线程,生产者类线程提交用户请求,消费者类线程则负责处理生产者线程提交的请求。 生产者-消费者模式架构图: [img]http://dl2.iteye.com/upload/attachment/0104/9711/02fdb299-0dae-3753-ab30-88462f726d17.jpg[/img] 由图可...2015-01-06 18:48:21 · 92 阅读 · 0 评论 -
多线程模式之Master-Worker模式
Master-Worker模式的核心思想是,系统由两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任务,Worker进程负责处理子任务。当Worker进程将各个子任务处理完成后,将结果返回给Master进程,由Master进程做归纳和汇总。 工作示意图如下图所示: [img]http://dl2.iteye.com/upload/attachment/...2015-01-06 18:49:59 · 120 阅读 · 0 评论 -
多线程模式之Future模式
1 Future模式简介 当某一程序提交了一个请求,期望得到一个答复,但是这个请求需要处理的时间可能很长,传统模式下这个请求是同步的,客户端必须等待请求响应之后才能执行其他操作。而在Future模式下客户端立刻拿到一个伪造的数据(相当于商品的订单,而非商品本身),而客户端在此期间可以调用其他业务逻辑,充分的利用了等待时间,这就是Future模式的核心所在。这样在整个调用过程中,就不存在无谓的等待...2015-01-09 13:51:49 · 88 阅读 · 0 评论