- 浏览: 494576 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
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语言中,每一个对象有一把锁。(每个对象都有自己的等待队列用来存放等待的线程)
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来进行线程的挂起或唤醒。
发表评论
-
elasticSearch使用
2022-04-27 08:42 412ElasticSearch 基于Apache Lucene构建 ... -
IDEA 快捷键
2022-03-02 16:55 244大小写转换快捷键 ctr+shift+u IDEA ... -
每天学到的技术点3
2022-02-21 20:01 2451.TEXT与BLOB的区别,二者 ... -
zookeeper dubbo 安装
2021-12-04 19:27 311docker-machine ssh default d ... -
JVM 调优与测试
2021-05-22 22:24 580VisualVM 能够监控线程,内存情况,查看方法的CPU ... -
百度人脸识别
2021-05-21 16:11 361package com.gaojinsoft.htwy.y20 ... -
springboot tomcat 参数配置与数据库连接池多少的性能分析
2021-05-12 22:15 558参数配置与数据库连接池多少的性能分析 tomcat线程数 ... -
log4j2应用
2020-07-23 14:16 362https://blog.csdn.net/giventian ... -
文件上传下载
2020-07-06 13:16 4171.文件ID,名字(源,目标),大小,路径(/aa/bb/s. ... -
base64与file 相互转换
2019-10-23 18:19 765base64与file 相互转换 import org. ... -
百度身份证识别
2019-10-18 18:19 661package com.gaojinsoft.htwy.y20 ... -
JAVA 实用方法
2019-05-16 09:50 351//得到xml文件中的sql文本 public St ... -
导出内容到excel文件方法
2019-05-15 10:52 507@SuppressWarnings("rawtype ... -
要求fsss
2019-09-21 21:30 300/* */ package com.midea.com ... -
反射、类信息、动态代理、CGLIB动态代理原理与测试
2019-01-29 21:04 483package com.midea.common.classT ... -
JVM 监控工具
2019-01-21 18:04 381JVM 监控工具 //========== ... -
java 线程池线程复用原理
2019-01-15 17:10 1158java 线程池线程复用原理 其实就一个大run()把其 ... -
runnable与thread 区别
2019-01-11 14:49 679runnable与thread 区别 在java中可有两种 ... -
Java的Future模式
2019-01-11 10:08 440Java的Future模式 runnable与thread ... -
限流处理大量的并发请求
2019-01-07 16:42 767限流处理大量的并发请求 第一种方法:在容器中配置最大请求数 ...
相关推荐
在BAT(百度、阿里巴巴、腾讯)等公司的面试中,LockSupport作为一个高频考点,通常会要求面试者结合具体场景来分析其工作原理和使用方式,因此,对LockSupport的深入理解和掌握对于提高并发编程水平和通过面试都...
本文将深入探讨这两个类的源码,理解它们的工作原理和应用场景。 一、Unsafe类详解 Unsafe类位于sun.misc包下,它提供了一系列的native方法,可以直接访问和修改内存,实现了硬件级别的原子操作。由于其强大的能力...
在"LockSupportTester.zip"的测试示例中,我们可以学习如何使用LockSupport来控制线程的执行流程,理解其核心功能和工作原理。 1. **LockSupport的基本原理**: LockSupport的核心是基于一个“许可”(permit)的...
在探究JVM线程状态以及Thread.sleep的实现原理时,我们首先需要了解Java线程与操作系统线程之间的关系。在Java虚拟机(JVM)中,每个线程通常都是以一对一的关系映射到操作系统线程上的。然而,尽管两者在实现上是...
LockSupport.unpark(waiters.poll()); } } // 其他Lock接口的方法实现... } ``` 这个自定义的MyLock类模拟了Lock接口的基本功能,包括tryLock()、lock()和unlock()。在实际开发中,为了保证线程安全和避免死锁...
在Java并发编程中,理解和掌握并发锁的原理与实现至关重要,因为它们是解决多线程环境下的互斥和同步问题的关键。本文将基于JDK源码解析Java领域中的并发锁,探讨AQS基础同步器、LockSupport、Condition接口、Lock...
分析这个示例可以帮助你更好地理解这两个方法的工作原理及其在实际开发中的应用。 总结一下,`LockSupport` 的 `park()` 和 `unpark()` 方法是Java并发编程中的重要工具,它们允许开发者精细地控制线程的执行和唤醒...
Java并发包源码分析(JDK1.8):囊括了java.util.concurrent包中大部分类的源码分析,其中涉及automic包,locks包(AbstractQueuedSynchronizer、ReentrantLock、ReentrantReadWriteLock、LockSupport等),queue...
1. **理解可重入锁的工作原理**:包括为什么可重入,以及如何避免死锁。 2. **深入学习LockSupport**:了解其与wait/notify的区别,以及park()和unpark()的使用场景。 3. **掌握AQS**:理解AQS的内部结构,如何通过...
13.LockSupport工具 14.并发容器之ConcurrentHashMap(JDK 1.8版本) 15.并发容器之ConcurrentLinkedQueue 16.并发容器之CopyOnWriteArrayList 17.并发容器之ThreadLocal 18.一篇文章,从源码深入详解ThreadLocal内存...
【部分内容】:章节内容主要涵盖Java基础,包括字符串常量池的行为,以及JUC(Java并发工具包)中的可重入锁原理和LockSupport的线程阻塞与唤醒机制。 1. **Java基础 - 字符串常量池** - 在JDK7及以上版本,字符串...
本文档提供了 Java 多线程编程的详细教程,涵盖了多线程的概念、原理、创建、启动、同步、锁、线程池、线程状态转换、线程交互、线程调度、volatile 关键字、信号量、阻塞队列、条件变量等知识点。 一、Java 多线程...
java并发,主要用于初学者学习,主要案列,Thread.join,ThreadLocal,Lock接口,LockSupport,Condition接口,ConcurrentHashMap的实现原理与使用 Fork/Join 框架,CountDownLatch,CyclicBarrier,Semaphore,...
10. **并发工具类**:`CountDownLatch`、`CyclicBarrier`、`LockSupport`和`Condition`等工具类的使用场景和原理。 11. **AQS框架**:`AbstractQueuedSynchronizer`框架的基础原理,如等待队列和独占模式等。 12. **...
对于并发编程,文档详细讨论了java.util.concurrent包下的各种并发工具类和接口,如LockSupport、AbstractQueuedSynchronizer、各种锁的实现(ReentrantLock、ReentrantReadWriteLock、StampedLock等)、并发集合...
5. **TIMED_WAITING**:定时等待状态,与`WAITING`类似,但有一个超时时间,例如`Thread.sleep()`, `Object.wait(long timeout)`、`Thread.join(long timeout)`、`LockSupport.parkNanos(long nanos)`和`LockSupport...
Java并发编程是Java开发中的重要领域,而JUC...记住,理解和掌握好并发编程的原理与技巧,对于成为一名优秀的Java开发者至关重要。在实际项目中,结合具体需求灵活运用这些工具,将有助于编写出更加健壮和高效的代码。