Java笔记(十一)——多线程同步
来源:互联网 发布:软件服务外包产业园 编辑:程序博客网 时间:2024/05/17 02:00
1.Java中是通过对资源(如内存)加锁的方式实现线程同步的,加锁的方法就是使用synchronized关键字。synchronized可用于给静态成员方法、非静态成员方法、语句块加锁,被加锁的资源在同一时间内只能有一个线程访问,线程的访问先后顺序由Java虚拟机调度;
2.若想用synchronized为成员方法加锁,只需将synchronized设为方法定义的关键字之一。当修饰静态成员方法,同一时刻只能有一个线程调用此方法。当修饰非静态方法时,同一个对象同一个时刻只能访问一次(存在多个线程共享一个对象的现象);
3.若想用synchronized为语句块加锁,使用语法如下:
synchronized(引用类型表达式){ ... }
其中的表达式必须是引用类型,指向某个类或实例对象,语句块放在大括号内,例如:
public class Test { ... }...synchronized(Class.forName("Test")) { ... }...Test test = new Test();synchronized(test) { ... }
其中Class.forName("Test")不能用Test代替,因为Test是类名不是引用数据类型的表达式。
4.多线程之间的协调工作:当线程A条件不满足时先暂停A,条件达标后再唤醒A,这种工作方式可以用wait/notify机制实现。例如:
synchronized(obj)
{
while(!condition)
{
obj.wait();
}
obj.doSomething();
}
当线程A获得了obj锁后,发现条件condition不满足,调用wait()把线程A放入等候集。
synchronized(obj)
{
condition = true;
obj.notify();
}
在线程B中,更改了某些条件,使得线程A的condition条件满足了,就能唤醒线程A:
注意:第一,调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) {...} 代码段内;
第二,调用obj.wait()后,线程A就释放了obj的锁;
第三,如果A1,A2,A3都在obj.wait(),则B调用obj.notify()只能唤醒A1,A2,A3中的一个,具体哪一个由JVM决定;
第四,当B调用obj.notify/notifyAll的时候,B正持有obj锁,因此,A1,A2,A3虽被唤醒,不过仍无法获得obj锁。直到B退出synchronized块,释放obj锁。
- Java笔记(十一)——多线程同步
- Java学习笔记(十一)多线程
- 黑马程序员笔记——Java多线程和同步
- java多线程同步笔记——阻塞队列
- Java —— 多线程笔记 二、线程同步
- Java线程和多线程(十一)——BlockingQueue
- Java多线程系列(十一)—ReentrantReadWriteLock源码分析
- Java多线程——同步(一)
- Java多线程——同步(二)
- Java多线程学习笔记——从Java JVM对多线程数据同步的一些理解
- Java多线程总结笔记(三)—— 同步和锁机制、synchronized
- Java笔记 - 多线程-同步函数
- JAVA菜鸟(十一)多线程
- java多线程学习笔记(三) ——多线程实例火车票问题+同步synchronized初接触
- 十一、初学Java多线程:使用Synchronized块同步变量
- 多线程编程学习笔记——线程同步(三)
- JAVA——多线程编程之同步:同步代码块与同步函数(二)
- Java并发学习之十一——同步方法
- 简明 Vim 练级攻略(Vim新手入门,进阶必读)by-陈皓
- 看透自己的老板一---性格篇
- 卖家技巧分享:外贸生意经
- oracle表分区详解
- HttP 协议特点
- Java笔记(十一)——多线程同步
- java给任意数额的钱数,求出最少数量的纸币组成方法
- eclipse本地历史设置
- Blocking/Non-Blocking IO and SYN/ASYN IO
- 程序员学习能力提升三要素
- HTML 基础标签实例(全面概况HTML的知识要点,这些一定要掌握)
- 运行dxp.exe运行时,软件出现:应用程序发生异常 未知的软件异常 (0x0eedfade),位置为 0x7c812afb的处理方法
- Processor ARM7TDMI raised an exception.Cause:Undefined instruction
- 有效控制成本寻找优质货源三大技巧