美文网首页
java的锁

java的锁

作者: 夜雨听风_b3d5 | 来源:发表于2019-11-06 23:04 被阅读0次

非公平:

1.调用lock()方法时,首先去通过CAS尝试设置锁资源的state变量,如果设置成功,则设置当前持有锁资源的线程为当前请求线程

2.调用tryAcquire方法时,首先获取当前锁资源的state变量,如果为0,则通过CAS去尝试设置state,如果设置成功,则设置当前持有锁资源的线程为当前请求线程,以上两步都属于插队现象,可以提高系统吞吐量

公平:

1.调用lock()方法时,不进行CAS尝试

2.调用tryAcuqire方法时,首先获取当前锁资源的state变量,如果为0,则判断该节点是否是头节点可以去获取锁资源,如果可以才通过CAS去尝试设置state,上面通过判断该线程是否是队列的头结点,从而保证公平性

说明:仅供个人整理学习

相关文章

网友评论

      本文标题:java的锁

      本文链接:https://www.haomeiwen.com/subject/uexpbctx.html