随笔分类 - Juc
摘要:AQS AQS可以重写的方法 // 排他锁 protected boolean tryAcquire(int arg) { return super.tryAcquire(arg); } protected boolean tryRelease(int arg) { return super.try
阅读全文
摘要:volatile 作用 保障可见性(线程嗅探、MESI) 将当前处理器缓存行的数据写回到系统内存 使在其他CPU里缓存了该内存地址的数据无效 防止指令重排 在每个volatile写操作的前面插入一个StoreStore屏障。禁止volatile写之前写 在每个volatile写操作的后面插入一个St
阅读全文
摘要:多线程串讲 说说并发与并行的区别? 并发: 同一时间段,多个任务都在执行 (单位时间内不一定同时执行); 并行: 单位时间内,多个任务同时执行。 说说线程的生命周期和状态?什么是上下文切换?(理解为主) 线程的生命周期和状态 Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的
阅读全文
摘要:AQS&管程模型 MESA模型 管程模型 public void method() { synchronized (this) { // do something } } AQS模型 Reentrantlock示例 简单示例 public class LockDemo { static Lock l
阅读全文
摘要:Java内存模型详解 硬件内存架构 理解内存模型架构以及Java内存模型如何与它协同工作也是非常重要的。 现代计算机硬件架构的简单图示: 多CPU:一个现代计算机通常由两个或者多个CPU。其中一些CPU还有多核。从这一点可以看出,在一个有两个或者多个CPU的现代计算机上同时运行多个线程是可能的。每个
阅读全文
摘要:Synchronized详解 简单介绍 synchronized中文意思是同步,也称之为同步锁。 synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。 synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种
阅读全文
摘要:多线程高级类 concurrent包的结构层次 在针对并发编程中,Doug Lea大师为我们提供了大量实用,高性能的工具类,针对这些代码进行研究会让我们队并发编程的掌握更加透彻也会大大提升我们队并发编程技术的热爱。这些代码在java.util.concurrent包下。 其中包含了两个子包:atom
阅读全文
摘要:多线程基础 多线程相关概念 线程和进程的概念 从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。 相对使用多进程来说,多线程的优势: 进程之间不能共享内存,但线程之间共享内存非常容易。 系统创建线程所分配的资源相对创建进
阅读全文
摘要:synchronized有什么作用,底层是如何实现的呢 【答案解析】 方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程调用时,其他线程处于等待状态) 所有的Java对象都有一个与synchronzied关联的监视器对象(monitor),允许线程在该监视器对象上进行加锁和解
阅读全文
摘要:多线程同步 synchronized synchronized关键字 synchronized, wait, notify 是任何对象都具有的同步工具。wait/notify必须存在于synchronized块中。详情如下: 方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程
阅读全文
摘要:线程池 为什么要用线程池? 池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数
阅读全文
摘要:juc搞定,接下来搞一些小基础和ElasticSearch、Docker。
阅读全文
摘要:Java多线程 基本概念 进程 进程就是执行程序的一次执行过程, 它是一个动态的概念, 式系统资源分配的单位 通常再一个进程中可以包含若干个线程, 当然一个进程中至少有一个线程, 不然没有存在的意义, 线程是 CPU 调度和执行的单位 线程 线程就是独立的执行路径 在程序运行时, 即使没有自己创建线
阅读全文