Java并发编程
文章平均质量分 97
所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。
boy快快长大
只要今天比昨天好,这不就是希望吗
展开
-
深入了解Synchronized原理
冯诺依曼,提出计算机由五大组成部分,输入设备,输出设备存储器,控制器,运算器。CPU:中央处理器,是计算机的控制和运算的核心,我们的程序最终都会变成指令让CPU去执行,处理程序中的数据。内存:我们的程序都是在内存中运行的,内存会保存程序运行时的数据,供CPU处理。缓存:CPU的运算速度和内存的访问速度相差比较大。这就导致CPU每次操作内存都要耗费很多等待时间。内存的读写速度成为了计算机运行的瓶颈。于是就有了在CPU和主内存之间增加缓存的设计。原创 2024-08-05 20:48:10 · 1049 阅读 · 1 评论 -
JUC并发编程:Monitor和对象结构
每一个被锁住的对象都会和一个monitor关联(对象头的MarkWord中的LockWord指向monitor的起始地址),同时monitor中有一个Owner字段存放拥有该锁的线程的唯一标识,表示该锁被这个线程占用。获取对象锁的过程,其实是获取monitor对象的所有权的过程。哪个线程持有了monitor对象,那么哪个线程就获得了锁,获得了锁的对象可以重复的来获取monitor对象,但是同一个线程每获取一次monitor对象所有权锁计数就加一,在解锁的时候也是需要将锁计数减成0才算真的释放了锁。原创 2023-10-11 08:16:48 · 361 阅读 · 0 评论 -
JUC并发编程:共享模型之管程
但小南不能一天24小时使用算盘,他经常要小憩一会(sleep),又或是去吃饭上厕所(阻塞 io 操作),有时还需要一根烟,没烟时思路全无(wait)这些情况统称为(阻塞)老王说 [ 小南,你的时间到了,该别人了,记住结果走吧 ],于是小南念叨着 [ 结果是1,结果是1…最近执行的计算比较复杂,需要存储一些中间结果,而学生们的脑容量(工作内存)不够,所以老王申请了一个笔记本(主存),把一些中间结果先记在本上。两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?原创 2023-09-24 12:10:55 · 634 阅读 · 0 评论 -
JUC并发编程:并发基础与Java多线程
其实就是线程,每个线程启动后,虚拟。机就会为其分配一块栈内存。原创 2023-08-27 21:52:39 · 1308 阅读 · 0 评论 -
Synchronized
悲观锁在Java中有两种典型的实现方式,一种是基于Object Monitor模式的资源操作方式,另一种是基于AQS技术的资源操作方式。他们共同的特点需要操作者获得资源的独占操作权才能对相关资源进行操作。补充:乐观锁思想该思想假设,并不是任何时候都有两个或多个操作者同时操作相同的资源,从而产生操作冲突。该思想还假设,即使操作结果存在错误也没有关系。可以通过对比预期值和实际值来确认操作的正误,如果出现错误,则放弃本次操作,重新操作即可。原创 2022-12-28 23:10:58 · 505 阅读 · 0 评论 -
并发编程知识点总结
线程是处理器任务调度和执行的基本单位。进程是操作系统资源分配的基本单位。进程是程序的一次执行过程,是系统运行的基本单位。线程是一个比进程更小的执行单位,一个进程可以包含多个线程。原创 2023-03-28 11:22:48 · 1075 阅读 · 1 评论