随笔分类 - Java并发
摘要:Java进程和线程 任务A执行I/O操作时,去执行任务B。 进程独占内存空间,线程共享进程的内存资源。 一、区别 进程时资源分配的最小单位,线程时CPU调度的最小单位 1、线程属于某个进程,共享其资源 2、线程只有堆栈寄存器、程序计数器和线程控制表(TCB)组成 线程的抢占 CAS自旋 JMM 结合
阅读全文
摘要:Java CAS synchronized为悲观锁,CAS乐观锁机制 包含三个操作数 内存位置V、预期原值A、和新值B,V和A相等的时候,才会更换成B。 缺点 1、循环时间长,则开销大 2、只能保证一个共享变量原子操作 3、ABA问题,改回去改回来,解决:juc提供了AtomicStampedRef
阅读全文
摘要:一、为什么需要锁 存在共享数据。 当出现ConcurrentModificationException的时候,存在多个线程对一个集合同时进行遍历或者修改。 单线程就不需要考虑这种情况。 二、解决方案 当前类中涉及集合修改和遍历操作加上synchronized关键字,或者是这两个逻辑放在一个线程中完成
阅读全文
摘要:一、Java内存模型(JMM) 线程-》工作内存-》主内存 主内存 1、存储Java实例对象 2、包括成员变量、类信息、常量、静态变量等 3、属于数据共享区域,多线程并发操作时会引发线程安全 工作内存 1、存储当前方法的所有本地变量信息,本地变量对其他线程不可见 2、属于对主内存变量的拷贝 3、字节
阅读全文