`
wode66
  • 浏览: 744022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java并发编程--AbstractQueuedSynchronizer的tryLock()方法分析(六)

阅读更多

tryLock()仅尝试一次获取锁,不管成功与否,都将返回结果。

 

public boolean tryLock()仅在调用时锁未被另一个线程保持的情况下,才获取该锁。 
	如果该锁没有被另一个线程保持,并且立即返回 true 值,则将锁的保持计数设置为 1。即使已将此锁设置为使用公平排序策略,但是调用 tryLock() 仍将 立即获取锁(如果有可用的),而不管其他线程当前是否正在等待该锁。在某些情况下,此“闯入”行为可能很有用,即使它会打破公平性也如此。如果希望遵守此锁的公平设置,则使用 tryLock(0, TimeUnit.SECONDS) ,它几乎是等效的(也检测中断)。 
	如果当前线程已经保持此锁,则将保持计数加 1,该方法将返回 true。 
	如果锁被另一个线程保持,则此方法将立即返回 false 值。 

返回: 如果锁是自由的并且被当前线程获取,或者当前线程已经保持该锁,则返回 true;否则返回 false

public boolean tryLock() {
        return sync.nonfairTryAcquire(1);
    }

 

 

 

 

 

分享到:
评论

相关推荐

    Java并发编程学习笔记

    Java并发编程是Java开发中必不可少的一部分,涉及到多线程、同步机制、线程池以及并发工具类等多个核心知识点。以下是对这些主题的详细说明: 1. **线程安全与锁 Synchronized 底层实现原理**: 线程安全是指在多...

    04 并发编程专题07.zip

    "04 并发编程专题07.zip"这个压缩包文件包含的两个子文件" Synchronized&Lock&AQS详解(上)(1).vep"和"Synchronized&Lock&AQS详解(上)(2).vep"很显然是关于Java并发编程中的关键概念——同步机制的深入讲解。...

    【并发编程】简单化理解AQS和ReentrantLock.pdf

    AQS和`ReentrantLock`是Java并发编程中重要的组成部分,通过对它们的理解和掌握,可以更好地设计和实现高性能的并发程序。通过本文的学习,读者可以了解到这些核心概念和技术的实际应用,并能够根据具体的业务需求...

    04 并发编程专题08.zip

    总结来说,Synchronized和Lock都是Java并发编程中的同步机制,但Lock提供了更高级的功能和更好的性能。AQS作为底层框架,为实现复杂的同步组件提供了便利。理解并熟练运用这些机制,对于编写高效、可靠的并发程序至...

    21 更高级的锁—深入解析Lock.pdf

    【描述】: 这份资料详细介绍了Java并发编程中的高级锁机制,特别是ReentrantLock的使用与原理。 【标签】: java, 并发, 编程, 宝典 在Java并发编程中,synchronized关键字是最基础的内置锁机制,它提供了线程同步...

    Java分布式应用学习笔记06浅谈并发加锁机制分析

    ### Java分布式应用学习笔记06浅谈并发加锁机制分析 #### 1. 前言 在深入探讨Java中的并发加锁机制之前,我们有必要回顾一下多线程环境下的一些基本...希望本文能帮助读者更好地理解和掌握Java并发编程的相关知识。

    Java后端技术面试汇总-2019

    ### Java后端技术面试知识点汇总 #### 一、Java基础篇 **1.1 Java基础** - **面向对象的特征**:面向对象编程的核心特征包括继承、封装和多态。 - **继承**:允许一个类继承另一个类的属性和方法。 - **封装**...

    java笔试题大全

    这份资料可能包含了从基础语法、面向对象编程、数据结构、算法、JVM原理到并发编程、Spring框架等多个方面的内容。通过这份文档,学习者可以系统地复习和巩固Java编程知识,提高在实际测试中的表现。 1. **Java基础...

    3.1.4.AQS底层原理分析1

    在Java并发编程中,AbstractQueuedSynchronizer(AQS)是一个核心的同步组件,用于构建锁和同步器的基础框架。AQS是一个抽象类,它提供了线程同步的基本机制,包括线程的排队、等待和唤醒。在Java.util.concurrent...

    互联网大厂Java高级工程师岗位面试真题154道

    - ReentrantLock提供了tryLock方法,可以尝试获取锁而不阻塞。 - ReentrantLock支持更细粒度的锁,如读写锁(ReadWriteLock)。 Java并发工具还包括Semaphore(信号量)、CountDownLatch(倒计时器)、...

    笔记-4、显式锁和AQS1

    3. **超时等待**:Lock接口提供了`tryLock(long timeout, TimeUnit unit)`方法,允许在指定时间内尝试获取锁,超时后自动返回,避免了线程无限期等待。 4. **可重入性**:synchronized和ReentrantLock(Lock的一个...

    多线程编程的核心思想.doc

    Lock 接口中的方法有 lock()、lockInterruptibly()、tryLock()、tryLock(long time, TimeUnit unit)和 unlock()。 * lock():获取锁,拿不到锁会阻塞,等待其他线程释放锁,获取到锁后返回。 * lockInterruptibly()...

    笔记-4、显式锁和AQS(1)1

    在Java并发编程中,锁机制是实现线程安全的重要手段。本文将详细探讨显式锁的概念,以及AbstractQueuedSynchronizer(AQS)的设计模式与使用方式。 首先,让我们了解什么是显式锁。在Java中,synchronized关键字...

    Google面试题

    5. **并发编程**: - volatile关键字、synchronized关键字的深入理解。 - CAS(Compare and Swap)无锁编程和AQS(AbstractQueuedSynchronizer)。 - 并发工具类:如CountDownLatch、CyclicBarrier、Semaphore、...

    Java源码解析之可重入锁ReentrantLock

    ReentrantLock的主要方法包括lock方法、unlock方法、tryLock方法、isHeldByCurrentThread方法和getHoldCount方法等。lock方法用于获取锁,如果锁已经被其他线程拥有,那么当前线程会被阻塞。unlock方法用于释放锁。...

    多线程面试题及处理方案和详解

    ### 多线程面试题及处理方案详解 #### 一、synchronized关键字解析 ##### 1.1 原子性、有序性、可见性 **1.1.1 原子性** ...这些知识点对于深入理解并发编程原理至关重要,也是面试中常被提及的内容。

    JDK_AQS解析

    在Java并发编程中,`AbstractQueuedSynchronizer`(简称AQS)是实现锁和其他同步工具的基础框架。AQS位于`java.util.concurrent`包下,通过模板方法设计模式实现了锁的底层机制。本文将详细解析AQS中的关键方法以及...

    【BAT必备】多线程面试题

    - **使用工具类**:如ReentrantLock提供的tryLock方法。 **2.2 ReentrantLock与synchronized的区别是什么?** 两者都是Java提供的锁机制,但存在以下区别: - **灵活性**:ReentrantLock提供了更高的灵活性,比如...

    资深程序员的Java面试题总结汇总.pdf

    ReentrantLock提供了更细粒度的控制,如tryLock、公平锁等。 12. ReentrantLock通过记录当前持有锁的线程和锁的重入计数来实现可重入性。 13. 除了ReentrantLock,还有Semaphore(信号量),CountDownLatch(倒计时...

    ReentrantLock流程浅析

    《ReentrantLock流程浅析——深入理解Java并发编程》 ReentrantLock,即可重入锁,是Java并发包(java.util.concurrent.locks)中的一个核心组件,它提供了比synchronized更灵活的锁机制。ReentrantLock实现了Lock...

Global site tag (gtag.js) - Google Analytics