1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断如果 使用Ree ...
分类:
其他好文 时间:
2017-02-27 18:46:29
阅读次数:
179
java 线程通信使用wait notify 配合synchronized 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程,然后继续往下执行,直到执行完退出对象锁锁住的区域(synchron ...
分类:
编程语言 时间:
2017-02-09 23:20:40
阅读次数:
232
1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRI ...
分类:
编程语言 时间:
2017-02-05 13:49:21
阅读次数:
201
堆内存地址未发生变化: 对象堆内存地址没发生变化的情况下,即值是否与变仍然是同一把锁。 堆内存地址变化: 在线程尝试进入过同步代码时复制当前对象锁副本。 在复制对象锁副本之后改变对象指向不影响对象锁,对象副本相同,即锁相同。 在复制对象锁副本之前改变对象指向,此时对象锁实质上已经是两把对象锁。 复制 ...
分类:
其他好文 时间:
2017-02-03 17:58:57
阅读次数:
137
恢复内容开始 JVM线程状态 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED BLOCKED是等待获得对象锁 WAITING是调用了wait, sleep, park 操作系统线程状态 sleep, 进入TIMED_WAITING ...
分类:
编程语言 时间:
2016-12-23 14:23:33
阅读次数:
368
wait是在当前线程持有wait对象锁的情况下,暂时放弃锁,并让出CPU资源,并积极等待其它线程调用同一对象的notify或者notifyAll方法。注意,即使只有一个线程在等待,并且有其它线程调用了notify或者notifyAll方法,等待的线程只是被激活,但是它必须得再次获得锁才能继续往下执行 ...
分类:
其他好文 时间:
2016-12-10 18:50:18
阅读次数:
146
wait notify 几个注意点: wait 与 notify/notifyAll 方法必须在同步代码块中使用,即要先对调用对象加锁。 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。 当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程,然 ...
分类:
编程语言 时间:
2016-12-04 17:30:46
阅读次数:
182
说明: 1、个人技术也不咋滴、也没在项目中写过线程,以下全是根据自己的理解写的。所以,仅供参考及希望指出不同的观点。 2、其实想把代码的github贴出来,但还是推荐在初学的您多亲自写一下,就没贴出来了。 一、基本说明 类、对象:。。。(不知道怎么说,只可意会不可言传>.<!);要明白哪些方法、变量... ...
分类:
编程语言 时间:
2016-11-28 09:06:18
阅读次数:
407
1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后又会自动恢复运行状态。 wait()方法是Object类里面的,主要的意义就是让线程放弃当前的对象的 ...
分类:
其他好文 时间:
2016-11-17 13:18:52
阅读次数:
185
文章注明来源:http://blog.csdn.net/yinwenjie,主要供自己学习转载用 1、JAVA中线程的状态 1-1、#对象锁 在Java中每一个对象都有一把‘锁’,这个‘锁’可以是开放状态;也可以由某一个线程(或者多个线程)持有‘钥匙’;一旦在系统中某个对象的‘锁’存在至少一把‘钥匙 ...
分类:
编程语言 时间:
2016-11-06 22:03:21
阅读次数:
302