- 但是仍然有些场景是不满⾜的,例如⼀ 个⽅法获取到锁之后,可能在⽅法内调这个⽅法此时就获取不到锁了。这个时候我们就需要把锁改进成可 重⼊锁了。 重⼊锁,指的是以线程为单位,当⼀个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,⽽其 他的线程是不可以的。可重⼊锁的意义在于防⽌死锁。 实现原理是通过为每个锁关联⼀个请求计数器和⼀个占有它的线程。当计数为 0 时,认为锁是... 但是仍然有些场景是不满⾜的,例如⼀ 个⽅法获取到锁之后,可能在⽅法内调这个⽅法此时就获取不到锁了。这个时候我们就需要把锁改进成可 重⼊锁了。 重⼊锁,指的是以线程为单位,当⼀个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,⽽其 他的线程是不可以的。可重⼊锁的意义在于防⽌死锁。 实现原理是通过为每个锁关联⼀个请求计数器和⼀个占有它的线程。当计数为 0 时,认为锁是...
- 前言 上一篇我们介绍Java内存模型来处理有序性,可见性的问题。但是,还有一个原子性的问题,没有处理,那么针对原子性的问题我们该怎么处理呢?我们知道在并发编程中的原子性问题主要原因就是,一条高级语句可能会被分成多个CPU指令,在指令执行完之后发生了线程切换,中间状态被暴露造成原子性问题。 锁 现实生活中,我们用自己的锁来保护自己的财产,买门票来锁定演唱会的座位。 ... 前言 上一篇我们介绍Java内存模型来处理有序性,可见性的问题。但是,还有一个原子性的问题,没有处理,那么针对原子性的问题我们该怎么处理呢?我们知道在并发编程中的原子性问题主要原因就是,一条高级语句可能会被分成多个CPU指令,在指令执行完之后发生了线程切换,中间状态被暴露造成原子性问题。 锁 现实生活中,我们用自己的锁来保护自己的财产,买门票来锁定演唱会的座位。 ...
- 前言 前面几篇文章,我们学习了synchronized的相关知识,以及死锁的发生条件以及避免的方式,其中有一种破坏死锁的方式就是破坏不可抢占条件,通过synchronzied不能实现的,因为synchronized在申请资源的时候,如果申请不到就只能进入阻塞状态,啥都干不了,也不能中断。所以只能通过本期的主角lock 来处理。 lock 与synchronized ... 前言 前面几篇文章,我们学习了synchronized的相关知识,以及死锁的发生条件以及避免的方式,其中有一种破坏死锁的方式就是破坏不可抢占条件,通过synchronzied不能实现的,因为synchronized在申请资源的时候,如果申请不到就只能进入阻塞状态,啥都干不了,也不能中断。所以只能通过本期的主角lock 来处理。 lock 与synchronized ...
- 文章首发于:Java并发编程(四)— 死锁的发生与避免 前言 上一篇我们介绍了如何通过synchronized 来加锁保护资源。但是,不当的加锁方式可能就会导致死锁。 死锁发生的场景 最典型的就是哲学家问题, 场景:5个哲学家,5跟筷子,5盘意大利面,大家围绕桌子而坐,进行思考与进食活动。 哲学家的活动描述: 哲学家除了吃面、还要思考、所以要么放下左右手筷子进... 文章首发于:Java并发编程(四)— 死锁的发生与避免 前言 上一篇我们介绍了如何通过synchronized 来加锁保护资源。但是,不当的加锁方式可能就会导致死锁。 死锁发生的场景 最典型的就是哲学家问题, 场景:5个哲学家,5跟筷子,5盘意大利面,大家围绕桌子而坐,进行思考与进食活动。 哲学家的活动描述: 哲学家除了吃面、还要思考、所以要么放下左右手筷子进...
- 文章目录 前言核心组件介绍线程组Http请求HTTP信息头管理器察看结果树聚合报告 固定定时器 总结 前言 我是码农飞哥,感谢您的阅读。众所周知,Jmeter是一款用来压测接口的利器。其组件比较多,可以应对各种场景下的压测需求。下面就让我们来认识一下这款利器。 核心组件介绍 组件名称组件作用组件添加方式线程组所有的测试计划都是以线程组为单位HTT... 文章目录 前言核心组件介绍线程组Http请求HTTP信息头管理器察看结果树聚合报告 固定定时器 总结 前言 我是码农飞哥,感谢您的阅读。众所周知,Jmeter是一款用来压测接口的利器。其组件比较多,可以应对各种场景下的压测需求。下面就让我们来认识一下这款利器。 核心组件介绍 组件名称组件作用组件添加方式线程组所有的测试计划都是以线程组为单位HTT...
- 原文链接:http://www.cnblogs.com/kismetv/p/8757260.html 前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。 概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的... 原文链接:http://www.cnblogs.com/kismetv/p/8757260.html 前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。 概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的...
- 前言 上一篇我们介绍了JVM06-经典垃圾收集器。这篇文章将介绍用来排查处理虚拟机故障的一些常用的命令行工具。因为如果我们要对JVM进行调优时,必须要通过这些工具分析虚拟机的运行状态。 jps: 虚拟机进程状况工具 jps命令是一个检查虚拟机进程状况的工具。它可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class)名称以及这些进程的本地虚拟机唯一... 前言 上一篇我们介绍了JVM06-经典垃圾收集器。这篇文章将介绍用来排查处理虚拟机故障的一些常用的命令行工具。因为如果我们要对JVM进行调优时,必须要通过这些工具分析虚拟机的运行状态。 jps: 虚拟机进程状况工具 jps命令是一个检查虚拟机进程状况的工具。它可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class)名称以及这些进程的本地虚拟机唯一...
- 单例模式,是我们最常用也最熟悉的一种设计模式,其使用要注意线程安全。 定义 单例模式:顾名思义,就是在应用中有且只有一个实例。一般类似于计数器类的都必须是单例,多例会导致计数结果不准。 一般而言,其分为饿汉式和懒汉式。 懒汉式 懒汉式:顾名思义,就是不在系统加载时创建类的实例。而是在调用时才去一次性创建。 demo如下: package com.singlet... 单例模式,是我们最常用也最熟悉的一种设计模式,其使用要注意线程安全。 定义 单例模式:顾名思义,就是在应用中有且只有一个实例。一般类似于计数器类的都必须是单例,多例会导致计数结果不准。 一般而言,其分为饿汉式和懒汉式。 懒汉式 懒汉式:顾名思义,就是不在系统加载时创建类的实例。而是在调用时才去一次性创建。 demo如下: package com.singlet...
- LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来... LinkedBlockingDeque的定义 LinkedBlockingDeque是一个通过链表实现的双端阻塞队列,如果不指定大小时,则默认的大小是Integer.MAX_VALUE,实现原理与LinedBlockingQueue类似。都是通过ReentrantLock+Condition+链表。 使用LinkedBlockingDeque 有哪些风险呢 在未来...
- 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))... 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))...
- 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai... 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai...
- 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和... 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和...
- 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH... 文章目录 前言 ConcurrentHashMap是啥时候进行扩容的? 第一处 helpTransfer方法 第二处treeifyBin方法 第三处addCount方法 transfer方法 参考 前言 前面对ConcurrentHashMap做了个一个整体的介绍,但是还有些疑问没问解决? ConcurrentH...
- 前言 前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。 RDB的方式 RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save... 前言 前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。 RDB的方式 RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save...
- 问题描述: 最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。 原因: 首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可... 问题描述: 最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。 原因: 首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签