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