浏览 2606 次
锁定老帖子 主题:java 之多线程 LOCK实现(三)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-09-05
接上节,为了解决一、二两节出现的缺陷,Peterson锁实现出现了,这是一个经典的双线程锁实现,请看代码: public class PertersonLockImpl implements Lock { private volatile boolean[] b = new boolean[2]; private volatile int flag = 0; public void init() { b[0] = false; b[1] = false; } public void lock() { int currentTheradId = ThreadUtil.getCurrentId(); b[currentThreadId] = true; flag = currentThreadId; while(currentThreadId == flag && b[1 - currentThreadId]) { } } public void unlock() { int currentThreadId = ThreadUtil.getCurrentId(); b[currentThreadId] = false; } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-09-06
谁来解释一下, 没看懂
|
|
返回顶楼 | |
发表时间:2012-09-06
最后修改:2012-09-06
解未知数 写道 谁来解释一下, 没看懂
这是一个自旋锁实现,锁的目的是进入一个临界区,一直在while上循环不能完成lock方法 就表示没有进入到临界区,一直在临界区外等待。 |
|
返回顶楼 | |