随笔分类 -  java 并发并行

摘要:异步模式之工作线程: 优先的工作线程轮流异步处理无线多任务【享元模式】; 饥饿:线程数不足; 线程池的大小: 过大:上下切换占用内存; 过小:导致饥荒 cpu计算:cpu 数+ 1 IO密集运算: 线程数 = 核数 * 期望cpu利用率 * 总时间【cpu计算时间 + 等待时间】 / cpu计算时间 阅读全文
posted @ 2025-03-31 10:44 烟雨断桥 阅读(14) 评论(0) 推荐(0)
摘要:ThreadLocal 提供线程内部的局部变量,在多线程下保证各个变量的相对独立性; 【与当前线程绑定的局部变量】 线程隔离:将共享变量加载为线程局部变量 ThreadLocal(); void set(T value); T get(); void remove(); 与symchronized的 阅读全文
posted @ 2025-03-30 23:37 烟雨断桥 阅读(22) 评论(0) 推荐(0)
摘要:JUC工具: AQS原理【AbstractQueueSychronizer】:阻塞式锁核相关同步器工具的框架 state属性:资源状态【独占模式和共享模式】; 可以通过CAS机制来设置state状态; 独占模式,只有一个线程能够访问; 共享模式:可以允许多个线程访问资源; 提供了FIFO的等待队列, 阅读全文
posted @ 2025-03-30 17:43 烟雨断桥 阅读(21) 评论(0) 推荐(0)
摘要:线程池: TreadPoolExecutor: 使用int的高3位标识线程池状态,低29位标识线程数; 这些信息存储在一个原子变量中,将线程状态和个数合二为一,方便进行原子操作 状态名 高3位 接受新任务 处理阻塞队列任务 说明 RUNNING 111 Y Y 刚创建的线程池 shutdown 00 阅读全文
posted @ 2025-03-28 22:34 烟雨断桥 阅读(28) 评论(0) 推荐(0)
摘要:不可变类设计 final的使用: 修饰属性或者private而且没有set方法,保证为只读属性; 修饰类,防止子类破坏不可变性; String的底层是private final char[] value; 当传入char数组的时候,会给value复制一份value【保护性拷贝:防止共享】; fina 阅读全文
posted @ 2025-03-24 18:43 烟雨断桥 阅读(16) 评论(0) 推荐(0)
摘要:在多核状态下:某个线程执行到带lock的指令的时候,cpu会让总线锁住,知道把这个指令执行完毕,然后在开启总线,以保证多个线程的原子性; CAS和volatile的相关工具类【JUC】: 原子整数: AtomicBoolean AtomicInteger AtomicLong 底层都是CAS:com 阅读全文
posted @ 2025-03-24 17:56 烟雨断桥 阅读(28) 评论(0) 推荐(0)
摘要:JMM 主存:共享资源;工作内存:局部变量。 原子性:保证执行不受线程上下文切换的影响【并发的影响】; 加锁; 可见性:保存不受cpu缓存的影响【JIT,缓存优化】; volatile:保证变量在多个线程的可见性【轻量级】; synchronized:也可以保证所见性,释放锁时触发内存同步【重量级】 阅读全文
posted @ 2025-03-24 14:55 烟雨断桥 阅读(30) 评论(0) 推荐(0)
摘要:ReentrantLock: 互斥:保证共享资源的原子性; 同步:使用条件变量来达到线程通信【wait-notify】; 相对于synchronized锁它具备以下特点: 可中断; 可设置超时时间 可以设置公平锁 支持多个条件变量: reentrantLock.lock(); try{ //临界区 阅读全文
posted @ 2025-03-24 11:58 烟雨断桥 阅读(20) 评论(0) 推荐(0)
摘要:Monitor java对象头 普通对象【32bit的jvm】: Mark word【32 bits】:对象信息; Klass Word【32 bits】:指向Klass对象【Class对象】; 数组对象: Mark word【32 bits】 Klass Word【32bits】 arraylen 阅读全文
posted @ 2025-03-23 17:21 烟雨断桥 阅读(114) 评论(0) 推荐(0)
摘要:共享模型的管理: 线程的阻塞,所以就有了cpu的时间片,尽可能的利用cpu: sleep:有时间限制的休息; wait:无时间的休息; io读写的阻塞; 临界区:Critical Section 多个线程的访问共享资源【主内存】的问题【并发问题】 多个线程对共享资源读写操作时发生了指令交错,所引发的 阅读全文
posted @ 2025-03-23 13:49 烟雨断桥 阅读(15) 评论(0) 推荐(0)
摘要:JUC并发: 进程:进程相当于程序的是实例化,是负责资源管理的,在java中进程作为资源分配,管理的最小单位; 线程:一个线程就是一个指令流,负责将指令按一定顺序交付给CPU,在java中,线程作为一个最小的调度单位【CPU根据线程找指令】; 在windows中,进程是不活动的,只是作为线程的容器【 阅读全文
posted @ 2025-03-19 21:01 烟雨断桥 阅读(26) 评论(0) 推荐(0)
摘要:线程的生命周期: Thread.state枚举类共有6种状态: NEW:尚未启动的线程状态; RUNNABLE:jvm中执行的状态; BLOCKED:被阻塞等待监视器锁定的状态; WAITING:等待其他线程执行的状态; TIME_WAITING:达到执行等待时间的线程状态; TERMINATED: 阅读全文
posted @ 2025-02-20 18:15 烟雨断桥 阅读(45) 评论(0) 推荐(0)
摘要:进程: 启动一个进程,操作系统就会给该进程分配内存空间; 进程是要给程序的执行过程,是动态过程,有产生,存在,消亡; 线程: 线程是由进程创建的,是进程的一个实体; 一个进程可以有多个线程; 线程也能创建线程; 并发:同一个时刻,多个任务交替执行; 并行:同一个时刻,多个任务同时执行; 线程的两种方 阅读全文
posted @ 2025-02-20 15:59 烟雨断桥 阅读(16) 评论(0) 推荐(0)