并发编程

关于并发编程与线程安全的思考与实践

并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化 ... »

jingdongkeji

Golang并发编程之Channel详解

目录 0. 简介 1. channel数据结构 2. channel创建 3. 数据发送 3.1 空通道的数据发送 3.2 直接发送 3.3 缓存区 3.4 阻塞发送 4. 接收数据 4.1 空通道的数据接收 4.2 直接接收 4.3 从缓存区拿 4.4 阻塞接收 5. 关闭 6. 总结 »

详解Java并发编程中的优先级队列PriorityBlockingQueue

目录 一、PriorityBlockingQueue概述 二、PriorityBlockingQueue源码解析 1.容器 2.比较器 3.构造函数 4.添加元素 5.获取元素 6.维护堆性质 总结 PriorityBlockingQueue是Java中实现了堆数据结构的线程安全的有界阻 »

云原生时代崛起的编程语言Go并发编程实战

Go语言是天然并发利器,通过通信来实现内存共享而不是通过共享内存来通信,本篇从了解Go的并发哲学、理论及并发原语开始,之后用一个个Go代码示例认识Go的协程、通道、定时器、互斥锁、池化、原生操作等十几个并发编程示例,进一步加深对其并发编程使用场景理解和原理的初步认识。 ... »

Python爬虫中的并发编程详解

目录 并发编程在爬虫中的应用 什么是并发编程 并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 并发编程在爬虫中的应用 本文将为大家介绍 Python 中的多线程、多进程和异步编程,并且以爬取“360图片”网站的图片并保存到本地为例,为大家分别展示使用单线程、多线程和异步 »

Go并发编程之死锁与活锁的案例分析

目录 什么是死锁、活锁 发生死锁的案例分析 发生活锁的案例分析 什么是死锁、活锁 什么是死锁:就是在并发程序中,两个或多个线程彼此等待对方完成操作,从而导致它们都被阻塞,并无限期地等待对方完成。这种情况下,程序会卡死,无法继续执行。 什么是活锁:就是程序一直在运行,但是无法取得进展。例如 »

Java并发编程之LongAdder执行情况是什么

这篇文章主要介绍“Java并发编程之LongAdder执行情况是什么”,在日常操作中,相信很多人在Java并发编程之LongAdder执行情况是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java并发编程之LongAdder执行情况是什么”的疑惑有所帮助!接下来 »

Java并发编程之LongAdder执行情况解析

目录 正文 longAccumulate方法 线程hash值 初始化Cell数组 对base进行累加 Cell数组初始化之后 正文 上篇文章 Java并发编程之LongAdder源码(一)中最后写到了有三种情况会执行longAccumulate方法,下面就根据这三种情况来进行分析 »

一文掌握Go语言并发编程必备的Mutex互斥锁

目录 1. Mutex 互斥锁的基本概念 2. Mutex 互斥锁的基本用法 3. Mutex 互斥锁的底层实现 3.1 等待队列 3.2 锁状态 4. Mutex 互斥锁的注意事项 4.1 不要将 Mutex 作为函数或方法的参数传递 4.2 不要在获取 Mutex 的锁时阻塞太久 4.3 »

详解Java并发编程之原子类

目录 原子数组 AtomicIntegerArray 原子更新器 AtomicIntegerFieldUpdater 原子累加器 LongAdder 原子数组 原子数组有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,主要是用 »

Java并发编程之LongAdder源码解析

目录 前言 源码简介 前言 上一篇文章 Java并发编程之原子类(二)中介绍了LongAdder常用的方法,今天我们根据源码来分析一下它的基本实现流程。 This class is usually preferable to AtomicLong when multiple thread »

详解Go并发编程时如何避免发生竞态条件和数据竞争

目录 会发生竞态条件和数据竞争的场景有哪些 避坑办法 实战场景 1.互斥锁 2.读写锁 3.原子操作 4.通道 5.WaitGroup 6.Context 会发生竞态条件和数据竞争的场景有哪些 多个 goroutine 对同一变量进行读写操作。例如,多个 goroutine 同时对一 »

超实用的Golang通道指南之轻松实现并发编程

目录 1. 什么是 Golang 通道 2. Golang 通道的基本语法 3. Golang 通道的缓冲机制 3.1 有缓冲通道 3.2 无缓冲通道 4. Golang 通道的超时和计时器 4.1 超时机制 4.2 计时器机制 5. Golang 通道的传递 6. 单向通道 7. 关 »

关于python并发编程中的协程

目录 什么是协程 协程和线程 协程的应用 演示Demo 什么是协程 协程(Coroutine)是一种比线程更加轻量级的并发方式,它不需要线程上下文切换的开销,可以在单线程中实现并发。协程通常具有以下特点: 协程中的代码可以暂停执行,并且在需要的时候可以恢复执行。 多个协程可以在同一线程 »

Java多线程编程中的并发安全问题及解决方法

目录 线程安全性 死锁 定义 实现一个死锁 查看死锁 解决死锁 其他线程安全问题 单例模式 线程安全性 线程安全是指我们所写的代码在并发情况下使用时,总是能表现出正确的行为;反之,未实现线程安全的代码,表现的行为是不可预知的,有可能正确, 实现线程安全的方式: 线程封闭 就是 »

从源码角度深入解析Callable接口

摘要:从源码角度深入解析Callable接口,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小。 本文分享自华为云社区《一个Callable接口能有多少知识点?》,作者: 冰 河。 并发编程一直是程序员们比较头疼的,如何编写正确的并发程序相比其他程序来说,是一件比较困难的事情,并 ... »

掌握Golang中的select语句实现并发编程

目录 序文 空select 只有default的select 序文 select 是用来配合channel使用的 空select 没有内容的select 会阻塞 没有内容是指,没有case,也没有default 如果没有其它的任务指执行,将会触发死锁 package main »

Golang并发编程重点讲解

目录 1、通过通信共享 2、Goroutines 3、Channels 3.1 Channel都有哪些特性 3.2 channel 的最佳实践 4、Channels of channels 5、并行(Parallelization) 6、漏桶缓冲区(A leaky buffer) »