0. wait/notify/notifyAll的理解? wait:让持有该对象锁的线程等待; notify: 唤醒任何一个持有该对象锁的线程; notifyAll: 唤醒所有持有该对象锁的线程; 它们 3 个的关系是,调用对象的 wait 方法使线程暂停运行,通过 notify/ notifyAl ...
分类:
编程语言 时间:
2019-08-11 15:02:46
阅读次数:
91
ReentrantLock ReentrantLock(轻量级锁)也可以叫对象锁,可重入锁,互斥锁。synchronized重量级锁,JDK前期的版本lock比synchronized更快,在JDK1.5之后synchronized引入了偏向锁,轻量级锁和重量级锁。以致两种锁性能旗鼓相当,看个人喜欢 ...
分类:
其他好文 时间:
2019-08-07 20:59:58
阅读次数:
346
这几天在准备计算机二级java考试遇到了对象锁的问题,java我没有看多线程的部分就是现学现用这里推荐一片文章挺不错的。 https://blog.csdn.net/zjy15203167987/article/details/82531772 ...
分类:
其他好文 时间:
2019-08-04 13:22:39
阅读次数:
75
JDK1.8源码学习-Object 目录 一、方法简介 1.一个本地方法,主要作用是将本地方法注册到虚拟机中。 2.获取类的字节码对象 3.返回当前对象的hash值 4.比较党当前对象的引用是否和要比较的对象的引用指向同一对象 5.克隆对象,浅拷贝 6.返回当前对象的一个字符串表示形式 7.唤醒一个 ...
分类:
其他好文 时间:
2019-07-16 12:28:59
阅读次数:
80
在多线程学习的过程中涉及的方法和接口特别多,本文就详细讲解下经常使用方法的作用和使用场景。 1.sleep()方法。 当线程对象调用sleep(time)方法后,当前线程会等待指定的时间(time),并让出cpu执行权,但是它的监控状态依然当前对象的保持者(不会释放对象锁),当指定的时间到了又会自动 ...
分类:
编程语言 时间:
2019-06-15 15:28:49
阅读次数:
99
public class SleepAndWait { public static void main(String[] args) { new Thread(new Thread1()).start(); try { //sleep不会释放锁对象,但是导致了程序暂停执行指定的时间,让出cpu给其他 ...
分类:
其他好文 时间:
2019-06-14 22:18:47
阅读次数:
153
这里我们先创建ObjLock类,并实现Runnable接口。并创建一个Demo类,具有被synchronized关键字修饰的非静态方法与静态方法。 非静态方法 运行程序,可以看到如下结果: 可以看到Thread0和Thread2交替出现,Thread1和Thread2交替出现,但Thread0和Th ...
分类:
其他好文 时间:
2019-06-04 13:26:02
阅读次数:
136
本文主要讨论Java中"对象监视器Monitor"和"对象锁"区别 简短的答案是,锁为实现监视器提供必要的支持。 监视器是一种同步结构,它允许线程同时互斥(使用锁)和协作,即使用等待集(wait-set)使线程等待某些条件为真的能力。 在JVM的规范中,有这么一些话很好的总结了锁和监视器之间的关系: ...
分类:
其他好文 时间:
2019-05-31 15:01:51
阅读次数:
100
相信很多小伙伴们初学多线程的时候会被这两个名次搞晕,所以这里专门介绍这两种实现多线程锁的方式的区别和使用场景 Syncrhonized 这个关键词大家肯定都不陌生,具体的用法就是使用在对象、类、方法上 + 当使用在对象和对象方法上的时候,就会获取相应的对象锁 + 当使用在类、类属性、类方法上的时候, ...
分类:
其他好文 时间:
2019-04-13 23:23:11
阅读次数:
516
实例实现:生产者生产两种商品,消费者取走两种商品 产生的问题及解决: 数据错乱 >线程同步 重复生产和重复取 >线程间的通信 线程间通信的方法 wait():调用了 wait()方法的线程进入等待池进行等待,等待池中的线程不去竞争对象锁,直到其它的线程通知,才会进入锁池 notify():随机唤醒一 ...
分类:
其他好文 时间:
2019-04-13 19:00:21
阅读次数:
199