六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

java 之多线程 LOCK实现(二)

[复制链接]

升级  76%

10

主题

10

主题

10

主题

童生

Rank: 1

积分
38
 楼主| 发表于 2013-2-3 10:34:34 | 显示全部楼层 |阅读模式
接上一节,回顾一下,锁的实现有一个缺陷:两个线程交替执行会死锁。现在我们来做另外一个双线程锁实现来解决这个缺陷:
public class ThreadLockImpl2 {    private volatile int flag = 0;    public void lock() {        int threadId = ThreadUtil.getCurrentId();        flag = threadId;       /**       * 如果没有另外一个线程重置flag,则等待。       **/       while(flag == threadId) {       }     }     public void unlock(){     }} 
这个锁实现的特点是,只要两个线程交替执行,则永远不会死锁。但是又会带来另外一个缺陷:如果一个线程单独顺序执行,则会死锁。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表