Java并发编程
文章平均质量分 92
Java并发编程
啊噢1231
这个作者很懒,什么都没留下…
展开
-
Java并发编程学习笔记7——共享模型之工具
让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务,也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式。例如,海底捞的服务员(线程),轮流处理每位客人的点餐任务,如果为每位客人都配一名专属的服务员,那么成本就太高了(对比另一种多线程设计模式:Thread-Per-Message)。注意,不同任务类型应该使用不同的线程池,这样能够避免饥饿,并能提升效率。原创 2022-08-19 16:56:38 · 210 阅读 · 0 评论 -
Java并发编程学习笔记6——共享模型之不可变
定义:享元模式(Flyweight pattern),当需要重用数量有限的同一类对象时。原创 2022-08-12 11:04:07 · 186 阅读 · 0 评论 -
Java并发编程学习笔记5——共享模型之无锁
有如下需求,保证account.withdraw取款方法的线程安全。原创 2022-08-11 16:26:50 · 263 阅读 · 0 评论 -
Java并发编程学习笔记4——共享模型之内存
JMM(JavaMemoryModel),它定义了主存、工作内存等抽象概念,底层对应着CPU寄存器、缓存、硬件内存、CPU指令优化等。原创 2022-08-08 19:33:27 · 173 阅读 · 0 评论 -
Java并发编程学习笔记3——synchronized原理
目录1、共享带来的问题1.1、临界区(Critical Section)1.2、竞态条件(Race Condition)2、synchronize解决方案2.1、应用之互斥2.2、synchronized2.3、面向对象改进3、方法上的synchronized4、变量的线程安全分析4.1、成员变量和静态变量是否线程安全?4.2、局部变量是否线程安全?4.3、常见线程安全类4.3.1、线程安全类方法的组合4.3.2、不可变类线程安全性5、Monitor(锁)概念5.1、Java对象头5.2、Monitor(锁原创 2022-06-10 09:47:58 · 356 阅读 · 0 评论 -
Java并发编程学习笔记2——Java线程
例如:1.2、方法2——使用Runnable配合Thread把【线程】和【任务】(要执行的代码)分开。Java8以后可以使用lambda精简代码。1.3、方法3——FutureTask配合ThreadFutureTask能够接收Callable类型的参数,用来处理有返回结果的情况。2、原理之Thread与Runnable的关系 方法1是把线程和任务合并在了一起,方法2是吧线程和任务分开了; 用Runnable更容易与线程池等高级API配合; 用Runnable让任务原创 2022-06-09 11:41:02 · 206 阅读 · 0 评论 -
Java并发编程学习笔记1——进程与线程
1、进程与线程进程:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的; 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个线程; 进程就可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(如网易云音乐、360安全卫士等)。线程:一个进程之内可以分为一到多个线程; 一个线程就原创 2022-05-30 20:13:40 · 169 阅读 · 0 评论