文章 2022-02-12 来自:开发者社区

带你聊聊 Java 并发编程之线程基础

01、简介百丈高楼平地起,要想学好多线程,首先还是的了解一下线程的基础,这边文章将带着大家来了解一下线程的基础知识。02、线程的创建方式实现 Runnable 接口继承 Thread 类实现 Callable 接口通过 FutureTask 包装器来创建线程通过线程池创建线程下面将用线程池和 Callable 的方式来创建线程publicclass CallableDemo implements....

文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程池机制 ( 线程池执行任务细节分析 | 线程池执行 execute 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )

文章目录一、线程池执行任务细节分析二、线程池执行 execute 源码分析一、线程池执行任务细节分析线程池执行细节分析 :核心线程数 10 1010 , 最大小成熟 20 2020 , 非核心线程数 10 1010 , 非核心线程空闲存活时间 60 6060 秒 , 阻塞队列大小 10 1010 个 ;当有 Runnable 任务进入线程池后 ;先查看 " 核心线程 " , 如果没有核心线程 ,....

文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

文章目录前言一、ThreadPoolExecutor 构造参数二、newCachedThreadPool 参数分析三、newFixedThreadPool 参数分析四、newSingleThreadExecutor 参数分析前言在上一篇博客 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingl....

文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )

文章目录总结一、原子性问题示例二、线程操作原子性问题分析三、使用 synchronized 解决线程原子性问题总结原子操作问题 : 线程中 , 对变量副本 count 进行自增操作 , 不是原子操作 , 首先 从工作内存中读取变量副本到执行引擎 ( 操作数栈 ) 中 , 然后 再 进行自增运算 , 最后 写回到线程工作内存中 , 这是 3 33 个操作 , 如果变量 在这 3 33 个操作的空档....

【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程指令重排序问题 ( 指令重排序规范 | volatile 关键字禁止指令重排序 )

文章目录总结一、指令重排序规范二、指令重排序示例总结Java 并发的 3 33 特性 :原子性 : 每个操作都是 不可拆分的原子操作 ; 在线程中进行 a++ 就不是原子操作 , 该操作分为 3 33 个步骤 , 首先从主内存中读取 a 变量 , 然后进行自增操作 , 最后在将自增后的值写回主内存中 ;可见性 : 多个线程 访问同一个变量 , 该变量一旦被 某个线程修改 , 这些线程必须可以 立....

【Java 并发编程】线程指令重排序问题 ( 指令重排序规范 | volatile 关键字禁止指令重排序 )
文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程共享变量可见性 ( volatile 关键字使用场景分析 | MESI 缓存一致性协议 | 总线嗅探机制 )

文章目录一、volatile 关键字场景分析二、缓存一致性协议 ( 总线嗅探机制 )一、volatile 关键字场景分析volatile 关键字使用场景 :public class Main { private static volatile boolean flag = false; private static void changeFlag() { Syst...

文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程简介 ( 原子操作 | volatile 关键字使用场景 )

文章目录一、原子操作二、volatile 关键字使用场景一、原子操作原子操作 :read : 从 主内存 中的线程共享变量中读取数据 ;load : 将从主内存读取到的数据 , 加载到 线程工作内存 中 ;read 和 load 操作一定是 成对出现 的 , 只要从主内存中读取到数据 , 一定会将这个数据加载到线程的工作内存中 ;use : 从线程共享变量副本读取到线程的 执行引擎 中 ;ass....

【Java 并发编程】线程简介 ( 原子操作 | volatile 关键字使用场景 )
文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程简介 ( 并发类型 | 线程状态 | CPU 数据缓存 )

文章目录一、并发类型二、线程状态三、CPU 数据缓存一、并发类型并发类型 :ThreadRunnableFutureThreadPool其中 Runnable , ThreadPool 都是基于 Thread 执行的 ;二、线程状态线程状态 :线程刚创建时 , 处于 " 新建状态 " ;调用线程 start() 方法之后 , 线程进入 Runnable " 可运行状态 " , 此时等待 OS 调....

【Java 并发编程】线程简介 ( 并发类型 | 线程状态 | CPU 数据缓存 )
文章 2022-02-06 来自:开发者社区

【Java 并发编程】线程简介 ( 进程与线程 | 并发概念 | 线程间通信 | Java 并发 3 特性 )

文章目录一、进程与线程二、并发三、线程间通信四、Java 并发 3 特性一、进程与线程最开始是没有线程这个概念的 , 一个应用程序就是一个进程 , 应用程序运行时 , 如果还要处理与用户交互的逻辑 , 二者只能 交替进行 , 这样 CPU 执行效率就很低 ;CPU 是整个计算机系统中的 稀缺资源 , 程序的运行 , 计算 都需要依赖 CPU 完成 ;为了 高效利用 CPU 这个稀缺资源 , 引入....

文章 2022-01-05 来自:开发者社区

Java并发编程系列之五:自定义线程工厂

问题我们在排查和定位现场问题时,通常希望明确这个线程池里面的线程到底是完成什么的什么任务,所以需要指定对应线程的线程名称。解决方式在创建线程池的时候,我们可以使用自定义的线程工厂,该线程工厂中可以指明线程名称,这样我们在排查问题时就可以知道,此处的多线程具体完成的任务名称是什么,方便进行后续的问题定位与排查。public class CustomThreadFactory implements ....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐