并发
yisish
知行合一
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java内存模型与线程
内存模型 特定的操作协议下,对特对的内存或高速缓存进行读写访问的过程抽象 Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下达到一致的内存访问效果 Java内存模型的主要目标是定义程序中各个变量(包括实例字段,静态字段和构成数组的对象元素,不包括局部变量与方法参数)的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样...原创 2019-05-21 20:53:43 · 143 阅读 · 0 评论 -
volatile 关键字详细介绍
本文将通过 Java 内存模型,CPU 缓存模型入手讲解 volatile 关键字的使用和原理 初识 volatile 关键字 public class VolatileFoo { final static int MAX = 5; static volatile int init_value = 0; public static void main(String[] a...原创 2019-05-28 19:56:02 · 251 阅读 · 0 评论 -
Thread API 详细介绍
本文将从常用的Thread API 角度讲解线程相关的操作和用法 线程sleep,yield 线程优先级,获取线程ID,设置线程上下文加载器 线程的interrupt,join 如果关闭一个线程 线程sleep sleep 是一个静态方法,有两个重载方法,一个需要传入毫秒数,另外一个继续毫秒数也需要纳秒数 public static void sleep(long millis, int n...原创 2019-05-23 23:22:27 · 1107 阅读 · 0 评论 -
深入理解Thread构造函数
Java 中提供了丰富的构造函数,在本文中,将介绍每一个构造函数,以及分析一些可能你未关注的细节 线程的命名 在构造线程的时候可以为线程起一个特殊意义的名字,有利用实际问题的排查和线程跟踪 线程的默认命名 public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0); } p...原创 2019-05-23 19:19:14 · 1349 阅读 · 0 评论 -
认识线程
目录结构 如何快速启动线程 线程的生命周期 关于start方法的剖析 Runnable 的引入 如何快速启动线程 创建一个线程类(Thread),重写Thread中Run方法 启动新的线程,只有调用了Thread的start方法,才代表派生了一个新的线程,否则Thread和普通的Java对象没有任何区别,start方法是一个立即返回的方法,不会让程序陷入阻塞 线程的生命周期 每一个...原创 2019-05-23 15:57:22 · 140 阅读 · 0 评论 -
类的加载过程
类的加载过程 ClassLoader 的主要职责就是负载加载各种 class 文件到 JVM 中,ClassLoader 会尝试加载并且在 JVM 中生成这个类的各个数据结构,然后使其分布在 JVM 对应的内存区域中 类的加载过程简介 类的加载过程一般分为加载,连接,初始化三个阶段 加载阶段:主要负责查找并加载二进制数据文件,生成一个代表这个类的 Class 对象 连接阶段 验证:主要确保类...原创 2019-05-27 20:27:37 · 170 阅读 · 0 评论 -
Hook 线程以及捕获线程执行异常
Hook 线程以及捕获线程执行异常 本文中,将介绍如何获取线程在运行时期的异常信息,以及如何向 Java 程序注入 Hook 的过程 获取线程运行时异常 public void setUncaughtExceptionHandler(UncaughtExceptionHandler eh) public UncaughtExceptionHandler getUncaughtExceptionHa...原创 2019-05-26 16:49:27 · 441 阅读 · 0 评论 -
ThreadGroup 详细讲解
ThreadGroup 详细讲解 在初识线程文章中,我们多次提到 ThreadGroup 的概念,在创建线程的时候如果没有显示指定 ThreadGroup , 那么新的线程会加入与父线程相同的 ThreadGroup 中,在本文中,将详细讲解有关 ThreadGroup 的知识 1. ThreadGroup 与 Thread 在Java程序中,默认情况下,新的线程都会加入到 main 线程所在的 ...原创 2019-05-26 10:44:29 · 1117 阅读 · 0 评论 -
线程安全与数据同步
本文,我们主要将探讨如何在安全的前提下高效的共享数据 数据同步 synchronized关键字 This monitor 和 Class monitor的详细介绍 程序死锁的原因和诊断 数据同步 首先我们来看一个数据不一致的例子 public class TicketWindowRunnable implements Runnable { private int index = 1;...原创 2019-05-25 23:12:15 · 238 阅读 · 1 评论 -
线程间的通信
多个线程实现互斥访问资源时会互相发送信号或等待信号,比如线程等待数据到来的通知,线程收到变量修改的通知等,本文将通过一些案例分析java提供的原生通信API,以及这些通信机制背后的内幕 同步阻塞与异步非阻塞 同步阻塞消息处理 假如这样一个系统功能,客户端提交Event到服务器,服务器接受到客户请求之后开辟线程处理,经过复杂计算后返回给客户端 分析这个系统,发现: 同步Event提交,客户端等待...原创 2019-05-25 20:17:49 · 208 阅读 · 0 评论 -
JVM 类加载器
类的加载器就是负责类的加载职责,对于任意一个 class,都需要由加载它的类加载器和这个类本身确立其在 JVM 中的唯一性,任何一个对象的 class 在 JVM 中只存在唯一的一份 JVM 内置的三大类加载器 JVM 中提供了三大内置的类加载器,不同的类加载器负责不同的类加载到JVM 内存之中,并且它们之间严格遵守父委托机制 根类加载器介绍 根加载器又称为 Bootstrap 类启动器,该类加...原创 2019-05-28 19:58:01 · 243 阅读 · 0 评论
分享