`
huangyongxing310
  • 浏览: 495834 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

LockSupport原理

    博客分类:
  • Java
 
阅读更多
LockSupport原理


在Java语言中,每一个对象有一把锁。(每个对象都有自己的等待队列用来存放等待的线程)
Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:
https://www.cnblogs.com/mingyao123/p/7424911.html


//--------------
连接是通过阻塞队列的方式进行存放的,一个存放空闲的连接,另一个存放使用着的连接

阻塞队列的实现是通过wait/notify方式实现的

锁的阻塞实现是通过LockSupport来实现的


//--------------
LockSupport 提供park()和unpark()方法实现阻塞线程和解除线程阻塞


LockSupport和每个使用它的线程都与一个许可(permit)关联


park就是挂起线程(更改线程运行状态),


LockSupport使用方式和wait/notify很类似


LockSupport是以线程为单位进行阻塞和唤醒,wait/notify是以对象为单位进行阻塞和唤醒,也可以一次唤醒被这个对象阻塞的线程(notifyAll)



unpark可以先于park进行调用,因为这个特点,我们可以不用担心挂起和恢复时序问题

LockSupport阻塞和唤醒线程直接操作的就是线程,所以从语义上讲,它更符合常理,或者叫更符合语义。而Object的wait/notify它并不是直接对线程操作,它是被动的方法,它需要一个object来进行线程的挂起或唤醒。
分享到:
评论

相关推荐

    Java 多线程与并发(9-26)-JUC锁- LockSupport详解.pdf

    在BAT(百度、阿里巴巴、腾讯)等公司的面试中,LockSupport作为一个高频考点,通常会要求面试者结合具体场景来分析其工作原理和使用方式,因此,对LockSupport的深入理解和掌握对于提高并发编程水平和通过面试都...

    Java并发编程学习之Unsafe类与LockSupport类源码详析

    本文将深入探讨这两个类的源码,理解它们的工作原理和应用场景。 一、Unsafe类详解 Unsafe类位于sun.misc包下,它提供了一系列的native方法,可以直接访问和修改内存,实现了硬件级别的原子操作。由于其强大的能力...

    LockSupportTester.zip

    在"LockSupportTester.zip"的测试示例中,我们可以学习如何使用LockSupport来控制线程的执行流程,理解其核心功能和工作原理。 1. **LockSupport的基本原理**: LockSupport的核心是基于一个“许可”(permit)的...

    JVM线程状态和Thread.sleep的实现原理探究.pdf

    在探究JVM线程状态以及Thread.sleep的实现原理时,我们首先需要了解Java线程与操作系统线程之间的关系。在Java虚拟机(JVM)中,每个线程通常都是以一对一的关系映射到操作系统线程上的。然而,尽管两者在实现上是...

    java的Lock锁原理详解.docx

    LockSupport.unpark(waiters.poll()); } } // 其他Lock接口的方法实现... } ``` 这个自定义的MyLock类模拟了Lock接口的基本功能,包括tryLock()、lock()和unlock()。在实际开发中,为了保证线程安全和避免死锁...

    基于JDK源码解析Java领域中的并发锁之设计与实现.pdf

    在Java并发编程中,理解和掌握并发锁的原理与实现至关重要,因为它们是解决多线程环境下的互斥和同步问题的关键。本文将基于JDK源码解析Java领域中的并发锁,探讨AQS基础同步器、LockSupport、Condition接口、Lock...

    android demo,locksuport的unpark一个线程。

    分析这个示例可以帮助你更好地理解这两个方法的工作原理及其在实际开发中的应用。 总结一下,`LockSupport` 的 `park()` 和 `unpark()` 方法是Java并发编程中的重要工具,它们允许开发者精细地控制线程的执行和唤醒...

    Java并发包源码分析(JDK1.8)

    Java并发包源码分析(JDK1.8):囊括了java.util.concurrent包中大部分类的源码分析,其中涉及automic包,locks包(AbstractQueuedSynchronizer、ReentrantLock、ReentrantReadWriteLock、LockSupport等),queue...

    尚硅谷大厂面试题第三季周阳主讲

    1. **理解可重入锁的工作原理**:包括为什么可重入,以及如何避免死锁。 2. **深入学习LockSupport**:了解其与wait/notify的区别,以及park()和unpark()的使用场景。 3. **掌握AQS**:理解AQS的内部结构,如何通过...

    【2018最新最详细】并发多线程教程

    13.LockSupport工具 14.并发容器之ConcurrentHashMap(JDK 1.8版本) 15.并发容器之ConcurrentLinkedQueue 16.并发容器之CopyOnWriteArrayList 17.并发容器之ThreadLocal 18.一篇文章,从源码深入详解ThreadLocal内存...

    尚硅谷面试题第三季1

    【部分内容】:章节内容主要涵盖Java基础,包括字符串常量池的行为,以及JUC(Java并发工具包)中的可重入锁原理和LockSupport的线程阻塞与唤醒机制。 1. **Java基础 - 字符串常量池** - 在JDK7及以上版本,字符串...

    Java多线程教程资料(强烈推荐).docx

    本文档提供了 Java 多线程编程的详细教程,涵盖了多线程的概念、原理、创建、启动、同步、锁、线程池、线程状态转换、线程交互、线程调度、volatile 关键字、信号量、阻塞队列、条件变量等知识点。 一、Java 多线程...

    ThreadTest.rar

    java并发,主要用于初学者学习,主要案列,Thread.join,ThreadLocal,Lock接口,LockSupport,Condition接口,ConcurrentHashMap的实现原理与使用 Fork/Join 框架,CountDownLatch,CyclicBarrier,Semaphore,...

    JAVA面试题2019

    10. **并发工具类**:`CountDownLatch`、`CyclicBarrier`、`LockSupport`和`Condition`等工具类的使用场景和原理。 11. **AQS框架**:`AbstractQueuedSynchronizer`框架的基础原理,如等待队列和独占模式等。 12. **...

    java技术指南

    对于并发编程,文档详细讨论了java.util.concurrent包下的各种并发工具类和接口,如LockSupport、AbstractQueuedSynchronizer、各种锁的实现(ReentrantLock、ReentrantReadWriteLock、StampedLock等)、并发集合...

    Java多线程 线程状态原理详解

    5. **TIMED_WAITING**:定时等待状态,与`WAITING`类似,但有一个超时时间,例如`Thread.sleep()`, `Object.wait(long timeout)`、`Thread.join(long timeout)`、`LockSupport.parkNanos(long nanos)`和`LockSupport...

    【学习笔记】JUC基础基础程序

    Java并发编程是Java开发中的重要领域,而JUC...记住,理解和掌握好并发编程的原理与技巧,对于成为一名优秀的Java开发者至关重要。在实际项目中,结合具体需求灵活运用这些工具,将有助于编写出更加健壮和高效的代码。

Global site tag (gtag.js) - Google Analytics