*只有类或对象有锁。
*每一个类和每一个对象都有且只有一把锁。可以对类中的静态方法(类方法)和一般成员方法(对象级方法)加上synchronized关键字。在方法前加synchronized,实际上锁的是类或对象。
如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法。类的静态方法类似。
*synchronized(object){...} 则只有获得object的锁才能执行{}中的代码。锁定的是object,而不是代码。object可能在其他地方锁了,所以要小心,以免造成死锁。
*类的锁:(1)静态方法前加synchronized。 (2)synchronized(className.class).(3)synchronized(Class.forName(className).
*零长度的byte数组对象创建起来将比任何对象都经济:private byte[] lock = new byte[0];
2010.2.21增加:
wait()方法可以使调用该方法的线程释放共享资源的锁,然后从运行态退出,进入等待队列,直到被再次唤醒。
notify()方法可以唤醒等待队列中第一个等待同一共享资源的线程,并使该线程退出等待队列,进入可运行态。
notifyAll()方法可以使所有正在等待队列中等待同一共享资源的线程从等待状态退出,进入可运行状态,此时,优先级最高的那个线程最先执行。
多个线程间的同步:
1. 使用一个类作为几个线程间的共享类,它的每一个方法都加上synchronized,在类中定义标识,每个方法处理这个标识的不同值,当标识是什么值时作相应操作,处理完后唤醒其他线程:notify(); 如果不是这个值时,则等待:wait()。
下面文章使用此方法模拟生产者、消费者的行为:http://blog.sina.com.cn/s/blog_49aa016d0100092q.html
2. 使用零长度的byte数组对象。在线程中的 run() 方法里,对此对象加上synchronized,while循环,使用标识,当标识是什么值时作相应操作,处理完后唤醒其他线程:notify(); 如果不是这个值时,则等待:wait()。
分享到:
相关推荐
java的线程同步机制synchronized关键字的理解_.docx
基于Java synchronized同步锁实现线程交互.pdf
Java线程(二):线程同步synchronized和volatile 详细讲解Java 同步的原理技术资料
四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的一些问题 41 Java线程:并发协作-线程的交互 47 Java线程:并发协作-生产者消费者模型 52 Java线程:并发协作-死锁 55 Java线程:线程之间的...
多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition } synchronized会影响共享数据,但对其他语句的执行不会有规律了!
Java线程及同步(synchronized)样例代码
synchronized下的方法控制多线程程序中的线程同步非常方便,这里就来看一下Java使用synchronized修饰方法来同步线程的实例演示,需要的朋友可以参考下
文件简述了java中线程同步的具体用法,希望能对您有点小用,不足之处,请您喷。
线程同步(synchronized)1---马克-to-win java视频 java视频
无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。 每个对象只有一个锁(lock)与之相关联。 实现同步是要很...
java 多线程同步详解 synchronized 的使用,锁定对象 ,锁定类 区别
Java中的synchronized:同步方法与线程安全
主要介绍了Java多线程synchronized同步方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
NoHttp核心架构之多线程通信、线程安全、线程同步;synchronized锁,Lock锁;具体讲解请移步博客:http://blog.csdn.net/yanzhenjie1003/article/details/50992468
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
主要介绍了Java线程之线程同步synchronized和volatile详解,具有一定参考价值,需要的朋友可以了解下。
1、在系统中对访类要使用多线程进行访问; 2、在该类中有 类变量,或者是 在类的方法中有访问公共资源(如一个外部文件的读写)。 同步锁锁定的内容是什么? 无论你将Synchronized加在方法前还是加在...
锁正是基于这种思路实现的一种线程同步机制。 在对共享数据加锁后,每个线程在访问共享数据时必须先申请相应的锁。一旦获得锁后,就可以访问共享数据,并且一个锁同一时刻只能被一个线程持有,这意味着获得锁后不会...
线程同步Synchronized,监视器monitor和锁lock的关系2---马克-to-win java视频