- 1. volatile简介 synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。 而volatile就可以说是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在并发编程中很多程序员遇到线程安全的问题就会使用synchronized。 各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作... 1. volatile简介 synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。 而volatile就可以说是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在并发编程中很多程序员遇到线程安全的问题就会使用synchronized。 各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作...
- 本文沿着《RocketMQ消息轨迹-设计篇》的思路,从如下3个方面对其源码进行解读: 发送消息轨迹消息轨迹格式存储消息轨迹数据 本节目录 1、发送消息轨迹流程1.1 DefaultMQProducer构造函数1.2 SendMessageTraceHookImpl钩子函数1.2.1 SendMessageTraceHookImpl类图1.2.2 源码分析Se... 本文沿着《RocketMQ消息轨迹-设计篇》的思路,从如下3个方面对其源码进行解读: 发送消息轨迹消息轨迹格式存储消息轨迹数据 本节目录 1、发送消息轨迹流程1.1 DefaultMQProducer构造函数1.2 SendMessageTraceHookImpl钩子函数1.2.1 SendMessageTraceHookImpl类图1.2.2 源码分析Se...
- 1、背景 公司一个 RocketMQ 集群由4主4从组成,突然其中3台服务器“竟然”在同一时间下线,其监控显示如下: 依次查看三台机器的监控图形,时间戳几乎完美“吻合”,不可思议吧。 2、故障分析 出现问题,先二话不说,马上重启各服务器,尽快恢复集群,降低对业务的影响,接下来开始对日志进行分析。 Java 进程自动退出(rocketmq 本身就是一个java进... 1、背景 公司一个 RocketMQ 集群由4主4从组成,突然其中3台服务器“竟然”在同一时间下线,其监控显示如下: 依次查看三台机器的监控图形,时间戳几乎完美“吻合”,不可思议吧。 2、故障分析 出现问题,先二话不说,马上重启各服务器,尽快恢复集群,降低对业务的影响,接下来开始对日志进行分析。 Java 进程自动退出(rocketmq 本身就是一个java进...
- 01 前言本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么?02 什么是内核内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程... 01 前言本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么?02 什么是内核内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程...
- 知其然,知其所以然。只知其然,不知其所以然,则学习如空中楼阁。 欢迎来到本系列最核心的课程,异步并发爬虫。本部分分为三篇博客来叙述,准备好上车了吗? 多线程技术 文章开始,我们先来看一下线程池的使用与效果。不知道效果就一味的讲为什么会怎么怎么样,显得枯燥。 什么是线程? 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运... 知其然,知其所以然。只知其然,不知其所以然,则学习如空中楼阁。 欢迎来到本系列最核心的课程,异步并发爬虫。本部分分为三篇博客来叙述,准备好上车了吗? 多线程技术 文章开始,我们先来看一下线程池的使用与效果。不知道效果就一味的讲为什么会怎么怎么样,显得枯燥。 什么是线程? 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运...
- 一、Java 中的线程池1. 线程池状态ThreadPoolExecutor使用int的高3位来表示线程池状态,低29位表示线程数量 // runState is stored in the high-order bits private static final int RUNNING = -1 << COUNT_BITS; private static final... 一、Java 中的线程池1. 线程池状态ThreadPoolExecutor使用int的高3位来表示线程池状态,低29位表示线程数量 // runState is stored in the high-order bits private static final int RUNNING = -1 << COUNT_BITS; private static final...
- 1. 等待一个子线程执行完毕 public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit( new Callable... 1. 等待一个子线程执行完毕 public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit( new Callable...
- 线程池:一个池子里创建1个或多个线程,通常往这个池子里扔进去多个任务,然后多个线程会抢着执行这些任务,如果一群狼共同吃掉这些羊群(多个任务)。 1. 创建线程池 目前我了解的创建线程池有4种方式: (1)线程池里的线程数是固定不变的;(2)线程池里只有1个线程池;(3)线程池里的线程数是动态变化的;(4)定时执行任务的线程池。 接下来我们就依次介绍一下上述4... 线程池:一个池子里创建1个或多个线程,通常往这个池子里扔进去多个任务,然后多个线程会抢着执行这些任务,如果一群狼共同吃掉这些羊群(多个任务)。 1. 创建线程池 目前我了解的创建线程池有4种方式: (1)线程池里的线程数是固定不变的;(2)线程池里只有1个线程池;(3)线程池里的线程数是动态变化的;(4)定时执行任务的线程池。 接下来我们就依次介绍一下上述4...
- Py之reprint:reprint的简介、安装、使用方法之详细攻略 目录 reprint的简介 reprint的安装 reprint的使用方法 reprint的简介 reprint 是一个适用于 Python3 的简易变量绑定与多行输出刷新的库。特性 + 简易变量绑定,内容修改时自动刷新命令行输出 + 多行输出刷新,实... Py之reprint:reprint的简介、安装、使用方法之详细攻略 目录 reprint的简介 reprint的安装 reprint的使用方法 reprint的简介 reprint 是一个适用于 Python3 的简易变量绑定与多行输出刷新的库。特性 + 简易变量绑定,内容修改时自动刷新命令行输出 + 多行输出刷新,实...
- 异常 异常的超类java.lang.Throwable Throwable:包括Error和Exception Exception:编译期异常,包括:RuntimeException:运行期异常 异常产生过程 JVM检测程序出现异常: JVM会根据异常产生的原因创建一个异常对象,这个异常对象包括异常产生的(内容,原因,位置);在getElement方法中,没... 异常 异常的超类java.lang.Throwable Throwable:包括Error和Exception Exception:编译期异常,包括:RuntimeException:运行期异常 异常产生过程 JVM检测程序出现异常: JVM会根据异常产生的原因创建一个异常对象,这个异常对象包括异常产生的(内容,原因,位置);在getElement方法中,没...
- 线程池 线程通信,避免多线程对同一共享变量的争夺。 等待与唤醒机制,wait – notify wait-- notify 必须由同一个锁对象调用 wait-- notify 属于Object类的方法 wait-- notify 必须要在同步代码块或者同步函数中使用 生产者和消费者 等待与唤醒机制 线程池 线程复用,让线程完成任务之后再继续进行其他任务... 线程池 线程通信,避免多线程对同一共享变量的争夺。 等待与唤醒机制,wait – notify wait-- notify 必须由同一个锁对象调用 wait-- notify 属于Object类的方法 wait-- notify 必须要在同步代码块或者同步函数中使用 生产者和消费者 等待与唤醒机制 线程池 线程复用,让线程完成任务之后再继续进行其他任务...
- Algorithm:算法方向——BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦 目录 计算机基础问题 1、进程与线程的区别 概率问题 1、貂蝉与西施回头率比美问题 计算机基础问题 1、进程与线程的区别 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位... Algorithm:算法方向——BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦 目录 计算机基础问题 1、进程与线程的区别 概率问题 1、貂蝉与西施回头率比美问题 计算机基础问题 1、进程与线程的区别 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位...
- Python之多线程:python多线程设计之同时执行多个函数命令详细攻略 目录 实现功能 采取方法 应用场景 实现功能 同时执行多个函数命令 采取方法 T1、单个实现 import threading threading.Thread(target=my_record()).start()threading.Thre... Python之多线程:python多线程设计之同时执行多个函数命令详细攻略 目录 实现功能 采取方法 应用场景 实现功能 同时执行多个函数命令 采取方法 T1、单个实现 import threading threading.Thread(target=my_record()).start()threading.Thre...
- 0. 用runnable创建线程具有面向对象的思想。 1. quartz 定时器开源库。 3. 多线程间的互斥: (1)多线程间的互斥,用synchronized关键字,两个线程用互斥锁必须用同一个对象才能实现互斥。 (2) 两个非静态函数前加synchronized关键字,它们的公用锁是this,就是当前对象实例。 (... 0. 用runnable创建线程具有面向对象的思想。 1. quartz 定时器开源库。 3. 多线程间的互斥: (1)多线程间的互斥,用synchronized关键字,两个线程用互斥锁必须用同一个对象才能实现互斥。 (2) 两个非静态函数前加synchronized关键字,它们的公用锁是this,就是当前对象实例。 (...
- 一、 通过线程池创建A,B,C三个子线程,并设置A子线程执行1秒;B子线程执行3秒; C子线程执行7秒。 要求:①主线程等待接收子线程执行结果后再执行后续处理。② 在①的基础上,如果子线程执行时间超过5秒,则主线程不再等待子线程结果,直接执行后续流程。 import java.util.ArrayList; import java.util.List; import java.... 一、 通过线程池创建A,B,C三个子线程,并设置A子线程执行1秒;B子线程执行3秒; C子线程执行7秒。 要求:①主线程等待接收子线程执行结果后再执行后续处理。② 在①的基础上,如果子线程执行时间超过5秒,则主线程不再等待子线程结果,直接执行后续流程。 import java.util.ArrayList; import java.util.List; import java....
上滑加载中
推荐直播
-
DeepSeek 深入浅出白话解读
2025/02/12 周三 17:00-18:00
Tim-华为云中国区AI解决方案总监
DeepSeek的来龙去脉,为什么DeepSeek那么强?哪些是它的领先优势?它是怎么发展过来的?在华为云上能不能用到DeepSeek?本节课将一一解读。
正在直播
热门标签