java锁——ReetrantLock NoFailSync 加锁过程
2015-10-25 21:28:56 0 举报
ReetrantLock 是 Java 中的一种锁机制,它提供了比 synchronized 锁更高级的功能。NoFailSync 是一种加锁策略,它在尝试获取锁时不会立即返回失败,而是会不断尝试获取锁,直到成功或线程被中断。 当一个线程尝试获取 ReetrantLock 锁时,如果锁已被其他线程占用,那么该线程就会进入等待队列。NoFailSync 加锁策略的线程在等待队列中会不断地尝试获取锁,直到成功或线程被中断。这种策略可以确保线程最终能够获取到锁,但可能会导致死锁或长时间阻塞。
作者其他创作
大纲/内容
若当前线程和对象线程相同说明线程重入对象state加1
tryAcquire(1)
setExclusiveOwnerThread(Thread.currentThread())
compareAndSetState判断当前对象是否加锁
acquire(1) 进入等待队列
state = 0 当前对象没有线程占用设该线程占用该对象
lock()
该对被占有的线程
nonfairTryAcquire(1)获取当前线程 再次对state做判断;
NoFailSync加锁过程
不满足条件返回false
返回true
0 条评论
回复 删除
下一页