
java
文章平均质量分 90
ijbuhv
这个作者很懒,什么都没留下…
展开
-
AbstractQueuedSynchronizer
节点状态: signal:表示其后续节点需要在其取消或者释放之后唤醒,再将后续节点唤醒时会将状态会切换为0 condition:表示当前节点需要等待condition,这是在condition队列中的 cancelled:表示当前节点已经被取消 propagate:这个状态是让唤醒传播下去,因为在共享模式下,可能会有多个节点出队, 几个原则 pre节点一定是当前节点对应的线程才会坐更改,所以对于其更新不需要用cas操作 next为null的不一定是tail节点,next节点主要是提升...原创 2021-02-02 10:40:45 · 267 阅读 · 0 评论 -
aqs中关于propagate状态的思考
aqs中队列的节点有多个状态,signal,cancelled,condition,propagate,0这几个状态,其他的状态都很好理解,但是对于propagate这个状态很难理解,它只在doReleaseShared这个方法中会切换到这个状态。在jdk1.6之前是没有这个状态的,引入这个状态是因为一个jdk bug。这个bug展示的是四个线程中两个线程来acquireShared,两个线程来releaseShared,则有可能有一个线程会挂住,一直在等待其他线程的唤醒。下面是具体的代码实现。 imp原创 2021-02-02 10:40:25 · 2097 阅读 · 2 评论 -
java泛型整理
Type的继承树 Type: 这是java中所有类型的父类 GenericArrayType: 这是表示的是带泛型的数组类型 ParameterizedType: 这表示的参数类型,如Collection这种 TypeVariable: 这表示的是带泛型的变量 WildcardType: 代表的是? extends A 这种泛型类型。 下面代码分别各个类型 import java.lang.reflect.Field; import java.lang.reflect.ParameterizedTy原创 2020-06-03 18:26:47 · 353 阅读 · 0 评论