首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏奔跑的蛙牛技术博客

    并发知识5

    锁和条件不能解决线程中的所有问题 账户1:200; 账户2:300; 线程1:从账户1转移300到账户2 线程2: 从账户2转移400到账户1 线程一和线程二都被阻塞了 两个账户的余额都不足以转账,两个线程无法执行下去 这样的状态称为死锁

    55520发布于 2018-09-05
  • 来自专栏后端精进之路

    Java并发编程系列-(5) Java并发容器

    5 并发容器 5.1 Hashtable、HashMap、TreeMap、HashSet、LinkedHashMap 在介绍并发容器之前,先分析下普通的容器,以及相应的实现,方便后续的对比。 通过下面的例子,可以清楚的看到,21和5在原来的数组中都处于相同的位置,但是在新的数组中,21到了新的位置,位置为原来的位置加上16,也就是旧的Capacity;但是5还在原来的位置。 中继承过来的;5-6是LinkedHashMap独有的。 concurrencyLevel 并发度:默认16。 在高并发下的情况下如何保证取得的元素是最新的?

    57510编辑于 2023-10-19
  • 来自专栏狗哥的 Java 世界

    Java 并发5)ReentrantLock 源码分析

    5. 如果想编写一个带有多个条件谓词的并发对象,或者想获得除了条件队列可见性之外的更多控制权,就需要使用显式的 Lock 和 Condition 而不是内置锁和条件队列。 有关于 ConditionObject 的具体实现大家可以查阅我的这篇文章《Java 并发(4)AbstractQueuedSynchronizer 源码分析之条件队列》,这里就不重复赘述了。

    67730发布于 2020-04-07
  • 来自专栏Golang开发

    Go语言核心编程(5)——并发

    注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 并发和并行是两个不同的概念: • 并行意味着程序在任意时刻都是同时运行的。 • 并发意味着程序在单位时间内是同时运行的。 goroutine是Go语言里面的并发执行体,通道是 goroutine之间通信和同步的重要组件。

    93530发布于 2019-05-29
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    Java并发学习5【面试+工作】

    Java并发学习5【面试+工作】 十一.future模式 future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。 (5) Main.java ? 输出结果: 请求完毕 数据 = aaaaaaaaaa future jdk实现 ? (1) RealData.java ? (2) Main.java ?

    33620发布于 2018-07-26
  • 来自专栏changxin7

    5.并发编程协程

    一 引子   本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态   cpu正在运行一个任务,会在两种情况下切走去执行其他的任务 上面这个图,是协程真正的意义,虽然没有规避固有的I/O时间,但是我们使用这个时间来做别的事情了,一般在工作中我们都是进程+线程+协程的方式来实现并发,以达到最好的并发效果,如果是4核的cpu,一般起5个进程 ,每个进程中20个线程(5倍cpu数量),每个线程可以起500个协程,大规模爬取页面的时候,等待网络延迟的时间的时候,我们就可以用协程去实现并发并发数量 = 5 * 20 * 500 = 50000个并发,这是一般一个4cpu的机器最大的并发数。 nginx在负载均衡的时候最大承载量就是5w个   单线程里的这20个任务的代码通常会既有计算操作又有阻塞操作,我们完全可以在执行任务1时遇到阻塞,就利用阻塞的时间去执行任务2。。。。

    63110发布于 2019-09-10
  • 来自专栏悠扬前奏的博客

    Java并发-5.线程状态

    } } 查看线程pid: $jps 48316 ThreadState 48317 Jps 查看线程状态: $jstack 48316 "TimeWaitingThread" #13 prio=5 TimeWaiting.run(ThreadState.java:24) at java.lang.Thread.run(Thread.java:748) "WaitingThread" #14 prio=5 com.junzerg.threads.ThreadState$Waiting) at java.lang.Thread.run(Thread.java:748) "BlockedThread-1" #15 prio=5

    80850发布于 2019-05-28
  • 来自专栏c语言与cpp编程

    《C++并发编程实战》读书笔记(5):设计并发代码

    今天继续更新《Effective C++》和《C++并发编程实战》的读书笔记,下面是已经更新过的内容: 《C++并发编程实战》读书笔记(1):并发、线程管控 《C++并发编程实战》读书笔记(2):并发操作的同步 《C++并发编程实战》读书笔记(3):内存模型和原子操作 《C++并发编程实战》读书笔记(4):设计并发数据结构 《Effective C++》读书笔记(1):让自己习惯C++ 《Effective C++》读书笔记(2):构造/析构/赋值运算 《Effective C++》读书笔记(3):资源管理 《Effective C++》读书笔记(4):设计与声明 《Effective C++》读书笔记(5) :实现 第8章 设计并发代码 在线程间切分任务的方法包括:1、先在线程间切分数据再处理。 5、过度任务切换和线程过饱和。 还有一些要额外考虑的因素:1、异常安全,某线程上有函数因异常而退出会导致整个程序被终结。

    51420编辑于 2023-09-06
  • 来自专栏程序猿DD

    如何模拟超过 5 万的并发用户

    来源:http://t.cn/ES7KBkW ---- 本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 在测试一次 提交线程的数量直到线程数达到1000或者60%的CPU或内存使用 如果你的引擎过了75%的CPU使用率或者85%的内存使用率(一次性的峰值可以忽略 : 看看你第一次达到75%的点,在那个点有多少并发用户 5万用户。 这样可以得到如下好处: 不用维护两个不同的测试类型 我们可以通过简单的复制现有集群来增加5K用户(5K比6K更常见) 只要需要我们可以一直增加 现在,我们已经准备好创建最终的5万用户级别的Master 你的5万用户级别的Master-Slave测试已经准备好了。通过按master上的开始按钮来运行10个测试,每个测试5千用户。

    1.8K20发布于 2019-05-14
  • 来自专栏JUC并发原理与源码

    JUC并发5.AQS源码分析一

    三种锁的并发度(1)Lock接口定义了抢占锁和释放锁的方法一.lock()方法抢占锁,如果没抢到锁则阻塞。 StampedLock使用了乐观锁的思想,避免了在读多写少场景中,大量线程占用读锁造成的写阻塞,在一定程度上提升了读写锁的并发性能。 三种锁的并发度一.ReentrantLock读读互斥、读写互斥、写写互斥。 AQS是专门用来支撑各种Java并发类底层实现的抽象类。AQS中最关键的两部分是:Node等待队列和state变量。 (5)独占锁的获取和释放总结一.获取锁时AQS会维护一个等待队列获取锁失败的线程会被加入到AQS的等待队列中,然后进行自旋 + 阻塞等待。

    34610编辑于 2025-04-24
  • 来自专栏测试开发干货

    接口测试平台189: 并发报告(5

    在django项目的 Myapp/templates文件夹下创建一个报告html模板:concurennt_report.html

    36720编辑于 2022-05-20
  • 来自专栏JAVA并发编程

    JAVA并发编程系列(5)AQS原理剖析

    很多小朋友面试时候,面试官考察并发编程部分,都会被问:说一下AQS原理。 面对并发编程基础和面试经验,专栏采用通俗简洁无废话无八股文方式,已陆续梳理分享了《一文看懂全部锁机制》、《JUC包之CAS原理》、《volatile核心原理》、《synchronized全能王的原理》,

    42820编辑于 2024-12-09
  • Mysql-5-MVCC(多版本并发控制)

    多版本的并发控制,Multi-Version Concurrency Control。 MVCC 使得数据库读不会对数据加锁,普通的SELECT请求不会加锁(避免了加锁操作,降低了开销),提高了数据库的并发处理能力。 MVCC 在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突, 做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。 MVCC 作用:1、通过处理读写冲突的手段,提高数据库高并发场景下的吞吐性能;2、根据 ReadView原理:每个读操作会看到一个一致性的快照(这个快照是基于整个库的), 举例:这种通过记录的版本链来控制并发事务访问同一个记录时的行为,这就叫 MVCC(多版本并发控制)。

    37010编辑于 2024-03-10
  • 鸿蒙5开发宝藏案例分享---应用并发设计

    鸿蒙并发编程实战指南:解锁ArkTS多线程黑科技 > ​**​嘿,开发者朋友们!​**​ 今天给大家扒一扒鸿蒙官方文档里藏着的并发编程宝藏——​**​100+实战场景解决方案​**​! 下面用最直白的语言+代码示例,带你玩转HarmonyOS并发开发! * * * ​**​一、ArkTS并发模型:颠覆传统的设计​**​ ​**​传统模型痛点​**​ ``` graph LR A[共享内存模型] --> B[线程+锁机制] B --> C[ this.inHoverMode = true // 触发画中画逻辑 } } ``` 场景3:生产者-消费者模式——阅读APP预加载 ​**​需求​**​:翻页时后台预解析后续5页内容 ``` // 生产端:主线程投递解析任务 function onPageTurn() { for (let i=1; i<=5; i++) { const task = new

    36610编辑于 2025-06-17
  • 来自专栏开发语言-Java

    Java并发编程学习5-对象的组合

    建立对象状态的并发访问管理策略。那如何找构成对象状态的所有变量? 要分析对象的状态,首先得从对象的域开始。如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的全部状态。 1.1 收集同步需求要确保类的线程安全性,就需要确保它的不变性条件不会在并发访问的情况下被破坏,这就需要对其状态进行推断。对象与变量都有一个状态空间,即所有可能的取值。 为了防止多个线程在并发访问同一个对象时产生的相互干扰,这些对象应该要么是线程安全的对象,要么是事实不可变的对象,或者由锁来保护的对象。2. 如果底层的类改变了同步策略并选择了不同的锁来保护它的状态变量,那么子类因为在同步策略改变后无法再使用正确的锁来控制对基类状态的并发访问,从而破坏了子类的线程安全性。 下一篇我们将要学习Java类库中的并发基础构建模块,敬请期待!

    41221编辑于 2024-08-08
  • 来自专栏yukong的小专栏

    【java并发编程实战5】线程与线程通信

    默认值是5,优先级大的分配的时间片会大于优先级低,所以频繁阻塞线程可以设置高优先级,而占用cpu比较长的线程(计算线程)可以设置较低的优先级。但是在有的操作系统会无视对线程有限制。 /** * @author yukong * @date 2018/9/5 * @description 线程池接口,抽象出来,定义规范 */ public interface ThreadPool 获取正在等待执行的任务数量 * @return */ int getJobCount(); } 然后编写一个实现类 /** * @author yukong * @date 2018/9/5 MAX_WORKER_NUMBERS = 10; /** * 线程池默认数 */ private static final int DEFAULT_WORKER_NUMBERS = 5;

    69020发布于 2018-10-09
  • 来自专栏Python基础、进阶与实战

    Python中的并发编程(5) PyQt 多线程

    此外我们定义了一个耗时5秒的任务oh_no,和按钮“危险”绑定。 当我们点击“危险”按钮时,程序去执行oh_no,导致显示停止更新了。 self.timer.timeout.connect(self.recurring_timer) self.timer.start() def oh_no(self): time.sleep(5) Your code goes in this function """ print("Thread start") time.sleep(5)

    1.4K11编辑于 2023-12-19
  • 来自专栏【腾讯云开发者】

    5大常见高并发限流算法选型浅析

    在现代高并发系统中,随着用户访问量的激增和业务需求的不断扩展,限流作为一种至关重要的保护机制,被广泛应用于防止系统过载,确保系统的稳定性和可用性。 在并发时候会产生额外的延迟等待开销(比如限制流量为1qps,两个请求同时到达,必然有其中一个请求需要等1s后才能服务)。

    63910编辑于 2024-12-19
  • 来自专栏拭心的安卓进阶之路

    并发编程5:Java 阻塞队列源码分析(下)

    上一篇 并发编程4:Java 阻塞队列源码分析(上) 我们了解了 ArrayBlockingQueue, LinkedBlockingQueue 和 PriorityBlockingQueue,这篇文章来了解剩下的四种阻塞队列 7 种阻塞队列的特点 这篇文章介绍的 4 种加上上一篇 细说并发4:Java 阻塞队列源码分析(上) 中 3 种,总共 7 种阻塞队列,这么多队列看的眼都花了。 环形数组实现的、有界的队列,一旦创建后,容量不可变 基于数组,在添加删除上性能还是不如链表 LinkedBlockingQueue: 基于链表、有界阻塞队列 添加和获取是两个不同的锁,所以并发添加 我们结合源码和《Java 并发编程的艺术》相关章节分两篇文章介绍了 Java 中的阻塞队列,了解了 7 种阻塞队列的大致源码实现,后面遇到需要使用阻塞队列时心里应该有些底了。 Thanks 《Java 并发编程的艺术》 http://blog.csdn.net/goldlevi/article/details/7705180 http://stevex.blog.51cto.com

    1.3K60发布于 2018-01-05
  • 来自专栏MySQL解决方案工程师

    InnoDB数据锁–第5部分“并发队列”

    条形图上的白色百分比是贝叶斯(Bayesian)估计的可信度,即由于源代码的更改导致TPS至少提高了1%(如果您不信任自己的眼睛,我们将在5分钟的时间里对每个组合进行5分钟的实验,并进行1分钟的预热))

    1K40发布于 2021-04-30
领券