同步异步

转载 2016年05月31日 13:18:54
问:对同一条数据,两人同时进行修改操作,第一个人先进去修改,然后,第二人个又进去修改,第一个人改完后提交,第二人也修改完提交,其中第一个人比第二个人速度快,这样就造成,二个人修改前读取的数据是一样的,而第二人个修改的数据,覆盖了第一个人修改的内容,造成第一人的工作白做了。


回答:
乐观锁机制:在表中增加一个字段,版本号或时间戳,当第一个人准备修改数据前,先查出这条数据的版本号或时间戳,前执行修改时,再去库中查出版本号或时间戳是否与之前一至。如果不一至,提示用户数据已被改变;如果一至可进行修改,修改时,更新库中的版本号(增加版本号)或时间戳(最后修改时间)。


http://blog.csdn.net/truong/article/details/8929438
http://www.cnblogs.com/LIANQQ/p/4660252.html


http://blog.csdn.net/cqkxboy168/article/details/9026205/
http://www.cnblogs.com/xiohao/p/4385508.html
http://blog.csdn.net/ning109314/article/details/10154321
http://dapple.iteye.com/blog/787563


悲观锁(Pessimistic Lock):
每次拿数据的时候都会担心会被别人修改(疑心重很悲观),所以每次在拿数据的时候都会上锁。确保自己使用的过程中不会被别人访问,自己使用完后再解锁。
期间需要访问该数据的都会等待。


乐观锁(Optimistic Lock):
每次拿数据的时候都完全不担心会被别人修改(心态好很乐观),所以每次在拿数据的时候都不会上锁。但是在更新数据的时候去判断该期间是否被别人修改过(使用版本号等机制),期间该数据可以随便被其他人读取。


两种锁各有优缺点,不能单纯的定义哪个好于哪个。乐观锁比较适合数据修改比较少,读取比较频繁的场景,即使出现了少量的冲突,这样也省去了大量的锁的开销,故而提高了系统的吞吐量。但是如果经常发生冲突(写数据比较多的情况下),上层应用不不断的retry,这样反而降低了性能,对于这种情况使用悲观锁就更合适。

同步异步

 同步和异步的区别 举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发->服务器处理(这是浏...
  • grasspower
  • grasspower
  • 2008年09月09日 20:16
  • 310

聊聊同步异步、阻塞非阻塞

1. 通用概念例子:”我”烧水(注意:这里的主语是”我”,也就是我们讨论的who)1.1. 同步异步1.1.1. 例子关注点:是否需要”我主动”去看水烧开没(注意,”我”和”主动”这两个词) 同...
  • xiaoyu966
  • xiaoyu966
  • 2016年04月22日 13:56
  • 380

小明去银行取钱了(同步异步、阻塞与非阻塞)

参考博客 nodejs里面采用了异步机制。下面对比说明同步异步机制、阻塞与非阻塞机制的区别。 好了,小明去银行取钱了。 同步:发出一个功能调用,没有得到结果时,该调用不会...
  • linxuxushiwoa
  • linxuxushiwoa
  • 2016年03月07日 21:03
  • 469

Java 多线程同步和异步详解

java线程 同步与异步 线程池 1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局...
  • fangqun663775
  • fangqun663775
  • 2015年06月12日 17:38
  • 1449

同步与异步详解

同步(synchronize)与异步(asynchronous ): (一)同步传输与异步传输的区别(硬件): (1)异步传输: 1)异步传输是以字符为传输单位,每个字符都要附加...
  • legend050709
  • legend050709
  • 2014年12月21日 16:35
  • 997

Ajax同步、异步、异步刷新

之前一直都是顺口都说异步刷新,今天就好好的学习了一下Ajax的异步、同步与异步刷新。     异步与同步他与刷新并不关联。要注意!    JQuery中的Ajax方法有个属性async用于控制同步...
  • h_tinkinginjava
  • h_tinkinginjava
  • 2017年07月20日 17:30
  • 288

阻塞/非阻塞/同步/异步详解

一、同步与异步 同步/异步, 它们是消息的通知机制 二、阻塞与非阻塞 阻塞/非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态. 同步 所谓同步,就是在发出一个功能调用时,在没有得到...
  • majianfei1023
  • majianfei1023
  • 2015年04月28日 12:36
  • 1583

AsyncTask异步方式详解及其使用

在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象,Android中可以使用AsyncTask和Handler...
  • zuolongsnail
  • zuolongsnail
  • 2011年05月04日 15:06
  • 7632

委托同步与异步

委托同步与异步
  • smileberry1
  • smileberry1
  • 2010年10月12日 20:42
  • 289

.NET关于同步、异步及Socket

以SOCKET通信中的异步方法为例:public static ManualResetEvent ConnectDone = new ManualResetEvent(false);     publ...
  • lanwilliam
  • lanwilliam
  • 2008年05月05日 09:46
  • 580
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同步异步
举报原因:
原因补充:

(最多只允许输入30个字)