线程同步的场景
来源:互联网 发布:linux 修改密码 eof 编辑:程序博客网 时间:2024/05/16 00:26
主要是限制两个分别位于不同线程的方法,必须不能同时执行,这样避免了脏数据。
一种思路是,锁住多个方法,比如读和写的方法都加上对象锁,这样就保证了通过同一个对象来调用读和写方法的两个线程中,读和写不能同时进行。
代码设计如下:
假设写方法耗时5s,用sleep来模拟。读方法几乎不耗时。
当程序中的线程A(AThread)开始写的时候,线程B(BThread)此时需要读数据(模拟的时候可以让主线程启动A后sleep1s再启动B)。如果不采取同步策略,由于线程A此时还没有写好数据,则线程B读到的数据就是还没写好的。
另一种思路是,只锁一个方法,不希望该方法在不同的线程中同时调用,比如单例模式的情况,如果有一个线程正在创建这个实例,则希望其他线程中调用创建实例的方法不要执行。
代码设计如下:
假设创建一个实例耗时5s,用sleep来模拟。
线程A在创建实例时,先判断该实例是否存在,如果存在,则不创建,不存在,就开始创建。如果不采取同步策略,则线程A在创建时,线程B也进入到创建的方法(模拟的时候可以让主线程启动A后sleep1s再启动B),则由于线程A尚未创建好实例,此时线程B也会执行创建实例,最终就会产生两个实例。
0 0
- 线程同步的场景
- 线程的同步异步,以及具体代码实现,使用场景
- 线程应用的场景
- POS线程同步互斥锁和读写锁的区别和各自适用场景
- 线程同步互斥锁和读写锁的区别和各自适用场景
- 线程的同步-同步方法
- 线程的同步-同步块
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- Java线程:线程的同步-同步方法
- Java线程:线程的同步-同步块
- [前端] JS控制音乐播放
- 博客搬家:www.915hm.com
- [然而这并没有什么卵用(划掉)]IBM Bluemix云虚拟机·初·夜·尝鲜记
- win7+linux双系统下删除linux系统
- 最新-开源可视化安全管理平台Ossim5.0使用
- 线程同步的场景
- PAE(物理地址扩展)开启与关闭的方法
- SQLSERVER 的bug
- 【工作流前进之路】Activiti 权限之处理用户组和用户关系
- 如何声明过期API,类似于调用非_s(安全版本)库函数,编译器输出警告信息
- echarts中横坐标值显示不全(自动隐藏)解决方案
- 泛型
- strstr 函数的 实现
- Linux安装视频播放器