*只有类或对象有锁。
*每一个类和每一个对象都有且只有一把锁。可以对类中的静态方法(类方法)和一般成员方法(对象级方法)加上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多线程同步是指在Java语言中,如何使用synchronized关键字和其他同步机制来确保多线程程序的正确执行。在Java语言中,synchronized关键字用于对方法或者代码块进行同步,但是仅仅使用synchronized关键字还不能...
Java 线程同步机制中 synchronized 关键字的理解 Java 的线程同步机制是为了解决多个线程共享同一片存储空间所带来的访问冲突问题。其中,synchronized 关键字是 Java 语言中解决这种冲突的重要机制。 ...
基于Java synchronized同步锁实现线程交互.pdf
Java线程(二):线程同步synchronized和volatile 详细讲解Java 同步的原理技术资料
四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的一些问题 41 Java线程:并发协作-线程的交互 47 Java线程:并发协作-生产者消费者模型 52 Java线程:并发协作-死锁 55 Java线程:线程之间的...
"Java 中 synchronized 用法详解" Synchronized 是 Java 语言中用于解决多线程共享数据...synchronized 关键字是 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同步方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这篇文章将详细介绍 Java 中的 synchronized 机制,通过实例代码,演示如何使用 synchronized解决多线程同步问题。 Java 中的同步机制 在 Java 中,同步机制是通过 synchronized 关键字实现的。synchronized 可以...
在 Java 中,synchronized 关键字是一个非常重要的概念,它用于解决线程同步问题。但是,很多开发者对 synchronized 关键字的理解并不够深入,本文将通过实例解析 Java 中的 synchronized 关键字与线程平安问题,...
NoHttp核心架构之多线程通信、线程安全、线程同步;synchronized锁,Lock锁;具体讲解请移步博客:http://blog.csdn.net/yanzhenjie1003/article/details/50992468
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。