上一页 1 2 3 4 5 6 ··· 15 下一页
摘要: 简介: 先行发生原则是Java内存模型中定义的两个操作之间的偏序关系。比如说操作A先行发生于操作B,那么在B操作发生之前,A操作产生的“影响”都会被操作B感知到。这里的影响是指修改了内存中的共享变量、发送了消息、调用了方法等。个人觉得更直白一些就是有可能对操作B的结果有影响的都会被B感知到,对B操作 阅读全文
posted @ 2020-03-27 12:23 怀鑫 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 指令重排的分类:编译期重排序和运行时重排序 在JVM编译时期或者CPU执行JVM字节码时期,对现有的指令进行重排序,主要目的为了优化运行速度(在不改变程序运行结果的前提下) int a = 3 //1 int b = 5; //2 int c = a + b; //3 虽然说指令重排可以调高程序的执 阅读全文
posted @ 2020-03-27 12:13 怀鑫 阅读(1240) 评论(0) 推荐(0) 编辑
摘要: AQS:全称AbstractQueueSynchronizer,抽象队列同步器,这个类在java.util.concurrent.locks包下 它是一个底层同步工具类,比如CountDownLatch,Sammphore,ReentrantLock,ReentrantReadWriteLock等等 阅读全文
posted @ 2020-03-26 15:11 怀鑫 阅读(3416) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.atomic包:原子类的小工具包,支持在单个变量上解除锁的线程安全编程 原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 阅读全文
posted @ 2020-03-26 14:25 怀鑫 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1.原子性:保证同一时刻该资源只能有一个线程访问修改,其他线程阻塞等待,例如Atomic包,锁 2.可见性:一个线程对于主内存的数据操作对于其他线程是可见的 3.有序性:一个线程观察其他线程中指令执行顺序,由于指令重排序存在,观察结果一般杂乱无序 原子性: 互斥访问,Atomic包,CAS算法,Sy 阅读全文
posted @ 2020-03-26 13:20 怀鑫 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: CAS:Compare and Swap,即比较再交换。 1. Java内存模型:JMM(Java Memory Model) 在内存模型当中定义了一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一块工作内存,工作内存当中主内存数据的副本 当更新数据时,会 阅读全文
posted @ 2020-03-26 13:17 怀鑫 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 乐观锁 悲观锁——是一种思想。可以用在很多方面。 数据库方面: 悲观锁就是for update(锁定查询的行) 乐观锁就是 version字段(比较跟上一次的版本号,如果一样则更新,如果失败则要重复读-比较-写的操作。) JDK方面: 悲观锁就是sync 乐观锁就是原子类(内部使用CAS实现) 本质 阅读全文
posted @ 2020-03-25 16:46 怀鑫 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 介绍: 读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同 阅读全文
posted @ 2020-03-25 16:22 怀鑫 阅读(1354) 评论(0) 推荐(0) 编辑
摘要: 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized——重量级的锁 ReentrantLock——轻量级的锁 lock()代表加入锁 unlock()代表释放锁 阅读全文
posted @ 2020-03-25 15:58 怀鑫 阅读(1328) 评论(0) 推荐(0) 编辑
摘要: 队列其实就是一个容器 在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队 列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 同步容器 Vector容器,HashTable容器,都是线程安全 如果同步容器使用fo 阅读全文
posted @ 2020-03-23 13:50 怀鑫 阅读(282) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页