后端开发前天 18:44
目录 异步任务和定时任务 使用Celery实现异步化 使用多线程实现异步化 定时任务 Celery和多线程的比较 Celery的优缺点 多线程的优缺点 定时任务的选择 schedule库 APScheduler库 总结 异步任务和定时任务 对于 Web 应用中的一些操作,它们可能需要较长时间才能完成,或者它们的执行时间无法确定。对于这些操作,如果用户只需要...
后端开发前天 12:32
目录 并发编程在爬虫中的应用 什么是并发编程 并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 并发编程在爬虫中的应用 本文将为大家介绍 Python 中的多线程、多进程和异步编程,并且以爬取“360图片”网站的图片并保存到本地为例,为大家分别展示使用单线程、多线程和异步 I/O 编程的爬虫程序有什么区别,同时也对它们的执行效率进行简单的对比...
后端开发2025年09月19日
目录 什么是协程 协程和线程 协程的应用 演示Demo 什么是协程 协程(Coroutine)是一种比线程更加轻量级的并发方式,它不需要线程上下文切换的开销,可以在单线程中实现并发。协程通常具有以下特点: 协程中的代码可以暂停执行,并且在需要的时候可以恢复执行。 多个协程可以在同一线程中并发执行,但是任意时刻只有一个协程在执行。 协程通常是基于事件循环(E...
后端开发2025年09月10日
目录 正文 属性介绍 加锁成功处理 正文 protected final int tryAcquireShared(int unused) { Thread current = Thread.currentThread(); int c = getState(); if (exclusiveCount(c) != 0 && ...
后端开发2025年09月03日
目录 一、PriorityBlockingQueue概述 二、PriorityBlockingQueue源码解析 1.容器 2.比较器 3.构造函数 4.添加元素 5.获取元素 6.维护堆性质 总结 PriorityBlockingQueue是Java中实现了堆数据结构的线程安全的有界阻塞队列。它可以在多线程场景下安全地进行元素添加、删除和获取操作,而且可...
后端开发2025年08月30日
目录 正文 longAccumulate方法 线程hash值 初始化Cell数组 对base进行累加 Cell数组初始化之后 正文 上篇文章 Java并发编程之LongAdder源码(一)中最后写到了有三种情况会执行longAccumulate方法,下面就根据这三种情况来进行分析 当Cell数组为null时,传入的三个参数为1,null,true 随机找到...
后端开发2025年08月29日
目录 前言 源码简介 前言 上一篇文章 Java并发编程之原子类(二)中介绍了LongAdder常用的方法,今天我们根据源码来分析一下它的基本实现流程。 This class is usually preferable to AtomicLong when multiple threads update a common sum that is used ...
后端开发2025年08月29日
目录 原子数组 AtomicIntegerArray 原子更新器 AtomicIntegerFieldUpdater 原子累加器 LongAdder 原子数组 原子数组有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,主要是用来对数组中的某个元素进行原子操作。三个类的方法基本类似,这里只介绍一...
后端开发2025年08月17日
目录 线程安全性 死锁 定义 实现一个死锁 查看死锁 解决死锁 其他线程安全问题 单例模式 线程安全性 线程安全是指我们所写的代码在并发情况下使用时,总是能表现出正确的行为;反之,未实现线程安全的代码,表现的行为是不可预知的,有可能正确, 实现线程安全的方式: 线程封闭 就是把对象封装到一个线程里,只有这一个线程能看到此对象。实现线程封闭的方式如下: 栈封...
后端开发2025年05月07日
首先在nginx.conf中进行如下配置: worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 60; ...