线程中的悲观锁和乐观锁

线程中的锁可以分为乐观锁和悲观锁,这两个都是实现锁机制的两种办法。

悲观锁:根据字面意思,悲观,就是不是太好的。当一个线程访问这个数据的时候,悲观锁会把这个数据给锁住,不被其他线程所访问,直到这个线程完成了对数据的提交后,其他线程才能够访问或者操作。这样就带来了不便,比如,我们在进行网上订票的时候,一个用户访问了这个系统,访问了这个系统中数据库的数据,就把这个数据给锁住了,这样其他用户根本就看不到数据。这样显然不行,我们想要的效果是用户都可以访问数据,但是只有一个用户提交对这个数据的修改。这就要乐观锁。

乐观锁:当用户要对这个数据进行修改操作时,才把这个数据锁住,也就是实现了一个用户提交操作的用途,它的好处是,用户在查看的时候,数据并没有锁住,当要修改提交的时候,把数据锁住,当其他用户再要提交修改时,就不能修改了。其中的乐观锁里面有一个版本控制器,当修改后,版本就+1,其他用户现在的版本还是0,这样在提交的时候,发现版本号低于现在的,所以,要更新,之后在进行修改。

posted @ 2012-11-05 15:09  闭眼  阅读(186)  评论(0编辑  收藏  举报