wait()、notify()/*
* wait()、notify()
*
* 1.两个方法都只能在synchronized代码块中执行,因为要对持有锁的线程操作,只有同步中才有锁
* 2.两个方法在操作同步中的线程时,必须要标识所操作线程持有的对象锁
* 3.等待和唤醒必须是同一个对象锁
*/
public class Test05 {
public static void...
分类:
编程语言 时间:
2015-03-30 09:21:54
阅读次数:
208
单例模式确保一个类只会有一个实例,而且会提供一个全局访问点,特别用于资源敏感的对象。在实现的时候要考虑多线程环境,就需要同步。在Singleton4实现中用双重检查加锁,减少同步粒度,从而只会在第一次(不超过两次)请求该实例的时候才会进行同步,在这里,之所以要Double
Check的原因是:假设线程P1,P2都执行到了pointA处,此时P1获得对象锁,进入了同步块,然后发现此时unique...
分类:
其他好文 时间:
2015-03-17 21:55:20
阅读次数:
125
记录原因:在开发中查看了一些优秀的图片下载框架,经常用到Synchronized同步,由于自己对同步有点模糊了,特此记录,方便下次查阅!
synchronized分为同步方法和同步代码块。
synchronized锁定的内容可以是具体的对象也可以是当前类的所有对象
synchronized可以有static变量锁和非static变量锁
1.同步方法
/**
* 对象锁...
分类:
其他好文 时间:
2015-03-16 23:14:50
阅读次数:
177
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIOR...
分类:
编程语言 时间:
2015-03-03 13:07:46
阅读次数:
175
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify...
分类:
其他好文 时间:
2015-03-01 13:03:59
阅读次数:
113
一直不明白一个问题,因为在书上关于生产者和消费者的例子里看到一段这样的代码,估计很多人都和我一样迷惑 1 public synchronized void set(String name, String content) { 2 if (!flag) { 3 ...
分类:
其他好文 时间:
2015-01-08 17:14:52
阅读次数:
170
转自:http://blog.sina.com.cn/s/blog_51335a000101nxlb.html
分类:
编程语言 时间:
2015-01-07 18:27:43
阅读次数:
180
java使用线程的两种方法:
1.继承Thread
2.实现Runnable
线程中的一些方法:
wait():
Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对
此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
sleep:
是线程类(Thread)的方法,...
分类:
编程语言 时间:
2014-12-18 22:17:44
阅读次数:
225
在进行多线程开发时,经常会用到同步锁:synchronized。该关键字可以使用在普通方法上,也可以使用在static方法上。这里叙述下这两种方式的区别,避免以后忘记。
我们都知道,每一个对象都有一个监视器。对于每一个类,有一个Class对象,也可以有该类的实例对象。如果synchronized放在普通方法上,线程在同步访问时,就会查看该类实例对象上的监视器;如果synchronized...
分类:
编程语言 时间:
2014-11-17 12:25:21
阅读次数:
184
Java多线程设计模式wait和notify机制总结:
wait和notify方法必须写在synchronized方法内,即在调用wait和notify方法前,需先获得对象锁;
调用wait方法则释放锁;wait方法返回后,需获得对象锁才可继续执行下面语句; 多个线程wait时,若另外的线程调用notify方法后,由JVM决定唤醒其中一个线程;
多个线程wait时,若另外的线程调用not...
分类:
编程语言 时间:
2014-11-15 15:33:51
阅读次数:
188