多线程和并发
文章平均质量分 86
liuxinyifan
这个作者很懒,什么都没留下…
展开
-
操作系统之进程和线程及JVM怎么实现Java线程安全
1.进程的定义和CPU执行我们写的代码存在硬盘里,编译后生成二进制可执行文件,当运行时会存到内存里,接着CPU执行指令,运行的程序就被称为进程。但是硬盘的读写速度很慢,如果CPU慢慢等硬盘返回数据的话,利用率就很低。所以当进程去硬盘读取数据时,CPU不需要阻塞等待数据的返回,而是执行其他进程。当数据返回时,CPU就会中断再继续运行这个进程。虽然单核CPU在某一瞬间只能运行一个进程。但在1秒期间可能会运行多个进程,这样就产生并行的错觉,实际上这是并发。并发和并行的区别?进程的状态:分为原创 2022-04-12 15:27:50 · 771 阅读 · 0 评论 -
AQS的原理和区别
syn和ReentrantLock都是可重入同步锁,可一定程度避免死锁。可重入锁:一个线程中的多个流程可以获取同一把锁,持有这把同步锁可以再次进入。自己可以获取自己的内部锁。syn的重入的实现机理LockSupport 的方法和作用相当于wait和notify的提升,LockSupport 中的park()和unpark()的作用分别是阻塞线程和解除阻塞线程。底层还是unsafe,native。 park的底层许可证permit默认是0,所以一开始调用...原创 2022-01-11 14:39:58 · 245 阅读 · 0 评论 -
对ThreadLocal的理解
ThreadLocal的作用1.ThreadLocal可以实现资源对象的线程隔离,每个线程各用各的,避免争用引发的线程安全问题局部变量可以实现线程私有,但是只局限于在一个方法内2.ThreadLocal同时实现了线程内的资源共享ThreadLocal原理ThreadLocal默认容量是16,扩容因子是2/3,哈希冲突不是用拉链法,而是用开放寻址法:找到离原本占用位置最近的一个空闲位置。ThreadLocal键和值的回收ThreadLocal里的键是弱引用,为..原创 2022-01-04 22:30:09 · 335 阅读 · 0 评论 -
线程池的工作原理、七大参数及线程池的种类
目录线程池的创建方式线程池的优势Runable和Callable接口的区别java的几种线程池线程池的七大参数线程池底层工作原理线程的拒绝策略手写线程池如何确定这些参数?死锁编码及定位分析线程池的创建方式:(1)继承Thread类;很少用,实际都是面向接口编程。(2)实现Runable接口 ; (3)实现Callable接口(JDK>=1.5);(4)线程池创建。线程池的优势Runable和Callable接口...原创 2022-01-04 21:47:35 · 1191 阅读 · 0 评论 -
多线程&并发(1)
一.voliate:轻量级的同步机制,保证可见性;不保证原子性;禁止指令重排JMM(Java内存模型)三大特性:可见性;原子性;有序性 运行速率:硬盘<内存<cpu,由于CPU计算快,计算好的数据可以先放在缓存cache里,虚拟机在内存里。可见性测试:AAAA线程对main线程不可见,代码会一直运行,解决方法:将number变量定义前加一个voliate原子性测试:其中,Thread.yield()方法作用是:暂停当前正在执行的线程对象(...原创 2022-01-03 19:16:33 · 201 阅读 · 0 评论