多线程
white_zzZ
这个作者很懒,什么都没留下…
展开
-
多线程中常用方法的区别
wait和sleepwait方法来自Object类中,sleep方法来自Thread类中sleep方法没有释放锁,而wait方法释放了,使得其他线程可以使用同步控制块或者方法sleep方法可以在任何地方使用,wait,notify,notifyAll只能在同步控制方法或者同步控制块里面使用sleep方法必须捕获异常(在sleep的过程中过程中有可能被其他对象调用它的interrupt()...原创 2020-01-30 21:46:56 · 208 阅读 · 0 评论 -
semaphore信号量使用以及原理
什么是信号量(semaphore)是一种JDK内置同步器,通过他可以实现多线程对公共资源的并发访问请求可以看成一个计数器,当计数器的值小于许可最大值时,所有acquire方法线程都可以得到一颗许可继续执行,而调用release方法则可以让计数器的值减一常用的重要方法1、public Semaphore(int permits) // 创建一个给定许可数量的信号量对象,且默认以非公...原创 2020-01-13 12:04:03 · 411 阅读 · 0 评论 -
ReentrantLock 及 其他锁 实现原理
ReentrantLock 及 AQS 实现原理一、什么是可重入锁?ReentrantLock 是可重入锁,什么是可重入锁呢?可重入锁就是当前持有该锁的线程能够多次获取该锁,无需等待。可重入锁是如何实现的呢?这要从 ReentrantLock 的一个内部类 Sync 的父类说起,Sync 的父类是 AbstractQueuedSynchronizer(后面简称AQS)。二、什么是AQS?...原创 2020-01-04 23:37:39 · 826 阅读 · 0 评论 -
Synchronized 关键字使用、底层原理
Synchronized 关键字使用、底层原理synchronized关键字最主要的三种使用方式修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁.访问静态 synchronized 方法占用的锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。即给当前类加...原创 2020-01-04 20:54:27 · 206 阅读 · 0 评论 -
CAS操作
CAS操作 - Compare and Swap概述Compare and Swap,比较并操作,CPU指令,在大多数处理器架构,包括IA32、Space中采用的都是CAS指令,CAS的语义是“我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”,CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程...原创 2019-12-03 16:18:11 · 161 阅读 · 0 评论 -
volatile关键字
volatile关键字说到volatile,我们前提得弄懂jvm的内存模型Java内存模型(JMM)就像电脑的存储模式一样:寄存器,高级缓存,RAM和ROM。学过计算机组成的都懂这就是电脑中的多级缓存,以提高读写速度的。在Java内存模型里,对上述的优化又进行了一波抽象。JMM规定所有变量都是存在主存中的,类似于上面提到的普通内存,每个线程又包含自己的工作内存,方便理解就可以看成CPU...原创 2019-12-03 14:58:18 · 124 阅读 · 0 评论 -
创建线程
创建线程的两种方法及优缺点继承类优点:可读性强缺点:java是单继承的,继承了Thread类后不能再继承其他类,对原有继承结构影响通过接口优点直观简单不影响继承结构...原创 2019-08-09 23:16:22 · 106 阅读 · 0 评论