`
johnnyking
  • 浏览: 18126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 之多线程 LOCK实现(二)

阅读更多

接上一节,回顾一下,锁的实现有一个缺陷:两个线程交替执行会死锁。现在我们来做另外一个双线程锁实现来解决这个缺陷:

public class ThreadLockImpl2 {

    private volatile int flag = 0;

    public void lock() {

        int threadId = ThreadUtil.getCurrentId();
 
       flag = threadId;

       /**
       * 如果没有另外一个线程重置flag,则等待。
       **/
       while(flag == threadId) {

       }
     }

     public void unlock(){

     }
}

 

这个锁实现的特点是,只要两个线程交替执行,则永远不会死锁。但是又会带来另外一个缺陷:如果一个线程单独顺序执行,则会死锁。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics