![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
RadNIkMan
脚踏实地,不吹水不装逼不讥讽
展开
-
并行和并发区别
标题一、举例说明(一)小明在电脑上面,一边听歌、一边下载学习资料、一边聊天。并发:一个CPU,根据时间片争抢随机执行任何一个任务;并行:多个CPU,每个执行其中一个任务;标题二、单个CPU只有并发,没有并行。标题三、举例说明(二)并发:一个人给三个小孩喂饭吃;并行:三个人给三个小孩喂饭吃,喂饭的人和小孩都不闲着;...原创 2022-03-21 11:26:35 · 250 阅读 · 0 评论 -
volatile修饰对象的时候,能否防止对象指令重排?
一、先看一个线程安全的DCL(double check lock)单例例子public class SingletonUser { //有可能拿到一个空的对象 private static SingletonUser instance = null; private SingletonUser() {} public SingletonUser getInstance(){ if(instance ==null){ synchroni原创 2022-03-21 09:09:32 · 169 阅读 · 1 评论 -
墙钟时间和CPU时间的区别
时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。 进程的三种状态为阻塞、就绪、运行。 时钟时间 = 阻塞时间 + 就绪时间 +运行时间 用户CPU时间 = 运行状态下用户空间的时间 系统CPU时间 = 运行状态下系统空间的时间。 用户CPU时间+系统CPU时间=运行原创 2021-07-21 19:38:49 · 1985 阅读 · 0 评论 -
多线程高并发笔记
多线程高并发笔记用户态与内核态JDK早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过kernel, 系统调用;hello.asm;write(int fd, const void *buffer, size_t nbytes)section data msg db "Hello", 0xA len equ $ - msgsection .textglobal _start_start: mov edx, len mov ecx, m原创 2021-07-06 10:02:23 · 186 阅读 · 0 评论