高并发
java_爱吃肉
少走弯路
展开
-
synchronize和valotile区别
valotile 修饰类变量、类实例时,在并发中,会及时直接写在主存中,不会拷贝副本到工作内存;禁止对有关联的语句进行重排,即有序----有可见性、有序性、无原子性;(未加这个修饰的变量修改时,会把工作区修改了,但同步至主内存不一定是实时;如果有valotile在工作区修改完,立刻同步至主内存) synchronized修饰类变量、类实例时,在并发中,先清空工作内存,从主存拷贝变量副本到工作内...原创 2019-12-21 15:56:57 · 649 阅读 · 0 评论 -
StampedLock、ReentrantLock、ReentrantReadWriteLock以及synchronized的比较,还有valotile
4种锁,并发量不是特别大且最稳定是内置synchronized锁(并不是完全被替代),当并发量大且读远大于写的情况下最快的的是StampedLock锁(乐观读。近似于无锁)。建议大家采用。 1)synchronized:重入锁同步锁--适用于并发量不是特别大的情况下,性能中等且稳定 2)ReentrantLock:可重入互斥锁,分为“公平锁”和“非公平锁”。--性能中等,建议需要手动操作...原创 2019-12-21 15:55:40 · 199 阅读 · 0 评论 -
线程的创建5大类方法汇总
public void run() { System.out.println("test"); } 1 Thread及其子类创建:线程的创建、任务、启动(Thread继承了Runnable接口的run) new Thread(){ @Override public void run() { System.out.println("test")...原创 2019-12-21 15:52:42 · 155 阅读 · 0 评论 -
如何避免死锁
1)避免死锁最简单的方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)做操作来避免死锁 2)死锁避免的基本思想:系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配,这是一种保证系统不进入死锁状态的动态策略。 ...原创 2019-12-21 15:50:40 · 266 阅读 · 0 评论