黑马程序员——线程同步的几种方法
2015-12-09 15:39
316 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
同步是用来解决多线程的安全问题的,在多线程中,同步能控制对共享数据的访问。如果没有同步,当一个线程在
修改一个共享数据时,而另外一个线程正在使用或者更新同一个共享数据,这样容易导致程序出现错误的结果。
线程同步的几种方法:
对于同步,在具体的Java代码中需要完成一下两个操作:
把竞争访问的资源标识为private;
同步哪些修改变量的代码,使用synchronized关键字同步方法或代码。
当然这不是唯一控制并发安全的途径
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
同步是用来解决多线程的安全问题的,在多线程中,同步能控制对共享数据的访问。如果没有同步,当一个线程在
修改一个共享数据时,而另外一个线程正在使用或者更新同一个共享数据,这样容易导致程序出现错误的结果。
线程同步的几种方法:
对于同步,在具体的Java代码中需要完成一下两个操作:
把竞争访问的资源标识为private;
同步哪些修改变量的代码,使用synchronized关键字同步方法或代码。
当然这不是唯一控制并发安全的途径
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
相关文章推荐
- 程序员未来发展三大方向
- 华为06年面试题——求交换数组元素后差值最小方案
- java工程师面试经典题目整理
- 成为一名更好的程序员,需要懂什么?
- 中软国际Java程序员笔试题
- 2015年-Google北京区-software engineering intern-面试经验
- 《疯狂的程序员》
- 作为程序员必知的16个最佳PHP库
- hadoop面试100道收集(带答案)
- 黑马程序员—java基础复习—多态和内部类
- 常见面试问题-介绍一下如何优化MySql???
- PHP程序员如何理解IoC/DI(转)
- 前端程序员的自我修养
- 黑马程序员——OC之protocol
- 理想的程序员
- 软件开发人员的作战手册 - 让程序员活的久一点
- 求职面试三法则
- 面试之十大不可说
- 求职,不要怕被别人看低
- Java程序员必知的10个调试技巧