
多线程
文章平均质量分 79
nZk丶
这个作者很懒,什么都没留下…
展开
-
ArrayBlockingQueue和LinkedBlockingQueue的区别与联系
目录相同点不同点1、由上图可以看出,他们的锁机制不同2、他们的底层实现机制也不同3、构造时的区别4、统计元素的个数其他问题5、LinkedBlockingQueue双锁带来的好处?6、为何ArrayBlockingQueue无法实现锁分离机制?相同点1、LinkedBlockingQueue和ArrayBlockingQueue都实现了BlockingQueue接口;2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的.原创 2020-08-08 18:11:30 · 2517 阅读 · 2 评论 -
内核态与用户态
最近学多线程,接触操作系统的东西比较多,这个内核态和用户态还是需要明确一下的。内核态:CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序用户态:只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取为什么要有用户态和内核态由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 --用户态和...原创 2020-07-26 15:07:32 · 155 阅读 · 0 评论 -
Java多线程之中的synchronized关键字
目录一.存在的意义二.如何使用1.同步方法2.同步代码块三.底层实现原理以及锁升级机制1.markword2.monitor一.存在的意义我们都知道并发编程需要具有:原子性 :原子操作是不可分割的操作,一个原子操作是不会被其他线程打断的。 可见性 :当一个线程对共享变量进行了修改,那么其他线程可以立即看到修改后的最新值。 有序性 :程序代码在执行过程中的先后顺序 Java编译器会在运行期优化代码的执行顺序,导致了代码的执行顺序未必就是开发者编写代码时的顺序...原创 2020-07-25 19:59:56 · 290 阅读 · 0 评论 -
浅谈java中的CAS
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volatile不能保证原子性。因此对于同步最终还是要回到锁机制上来。独占锁是一种悲观锁,synchronized就是一种独占原创 2020-07-25 18:36:58 · 145 阅读 · 0 评论 -
Java多线程基础总结
目录一.线程和进程1.进程的特点2.并行与并发3.线程和进程的渊源4.线程的特点5.线程和JVM的关系二.线程的创建方式1.继承Thread类创建线程类2.实现Runnable接口创建线程3.通过Callable和Future接口创建线程三.线程的七种状态以及相互之间的转换四.线程中常用的方法一.线程和进程进程是指处于运行过程中的程序,并且具有一定的独立功能。进程是系统进行资源分配和调度的一个单位。当程序进入内存运行时,即为线程。1.进程的特点原创 2020-07-17 18:29:23 · 174 阅读 · 0 评论