首页 > 基础资料 博客日记
java基础----AQS的问题答疑
2023-07-27 18:06:27基础资料围观237次
Java资料网推荐java基础----AQS的问题答疑这篇文章给大家,欢迎收藏Java资料网享受知识的乐趣
1. 公平锁和非公平锁如何理解?
公平锁在尝试获取锁的时候会查看等待队列是否为空,如果不是空,直接返回失败。而非公平锁进来直接判断状态是否是0,如果是0就抢占锁。
2. 每次被加入到等待队列的线程都会执行获取锁的操作吗?
不是,只有前驱是头节点的节点线程才会去执行tryAcquire方法去尝试获取锁。
3. 基本流程通俗易懂的讲出来?
共享资源假设为S。多个线程抢占。
排他锁:每次只有一个线程能获取到资源,其他的线程就被加入到等待队列中,等待获取到锁的线程执行完去唤醒他,如果加入顺序是A->B->C->D,那么唤醒顺序就是当前线程唤醒A,A唤醒B,B唤醒C,C唤醒D。
共享锁:每次可以有多个线程获取到资源,但是资源有数量限制,比如信号量里,资源是信号量数,比如是5,那么可以有5个线程都拿到资源可以执行,多余的需要被放到等待队列中排队,等有空闲的信号量时候,唤醒在排队的线程。如果是闭锁,主线程会阻塞在等待队列中,一直到状态被减到0才能获取锁。继续执行。
文章来源:https://www.cnblogs.com/ygliu/p/15676026.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: