代码编织梦想

sychronized锁升级的详细分析-爱代码爱编程

前言: 本篇文章重点讲述sychronized的锁升级过程,主要涉及无锁到匿名偏向锁、偏向锁、轻量级锁、重量级锁的锁升级过程和每种锁的基本原理和优缺点。 一、轻量级锁(CAS) 基本概念 CAS(Compare and set)比较并交换,就是我们平常说到的乐观锁、自旋锁、轻量级锁。 具体流程:一个线程进来,获取对应的当前对象值E

从网络到高并发负载均衡_uku 2302-爱代码爱编程

从网络到高并发负载均衡 引言 在现在这个时代,上网并具消费能力的群体有2亿多。如果要获得这些流量,从技术这个角度来看,系统需要承受亿级的并发,那么怎么hold住这么大的并发呢。本篇就从网络出发,讲解下应对高并发的技术—负

高并发的三大特性_高并发系统 特点-爱代码爱编程

高并发的三大特性 引言 上一篇讲了线程的基础知识,谈到线程了,就会想到多线程与高并发,本篇就讲讲高并发的三大特性。 可见性 问题由来 线程用到堆中一个变量时,会copy一份使用,对其进行修改,不会立即刷新原值,若有

java内存模型-爱代码爱编程

文章目录 Java内存模型(一)并发编程模型(1)两种并发模型 (二)Java内存模型的抽象结构(1)模型结构(2)Java内存模型(简称JMM)(3)JMM与Java内存区域划分的区别与联系

重排序与happens-爱代码爱编程

文章目录 (一)重排序(1)为什么要进行指令重排序? (二)顺序一致性模型与JMM的保证(1)顺序一致性模型(2)JMM中未同步程序的顺序一致性效果 (三)happens-before(1)基础

线程基础知识-爱代码爱编程

线程 引言 最近想起多线程和高并发的知识,好久没看,感觉有点陌生了,想着还是好好梳理一下。就从线程开始吧。 线程的基础知识 什么是线程 资源调度的基本单位,可理解为一个程序中不同的执行路径 为什么用多线程 充分

创建线程的四种方式 线程通信-爱代码爱编程

文章目录 1.1 创建线程1.1.1 创建线程的四种方式1.1.2 Thread类与Runnable接口的比较1.1.3 Callable、Future与FutureTask 1.2 线程组和线程优先级

asynctaskfuture异步多任务处理器的实现-爱代码爱编程

需求背景 项目的一个导入功能,但是需要远程调用其他域,开始是java循环调用出现了超时的情况,考虑采用异步多线程的方式,分批次多线程调用中台,批量调用中台的逻辑结束之后根据反参才能执行主线程的后续逻辑。这里采用了异步线程的

多线程算法-爱代码爱编程

轮训线程,使每个线程输出5个数字 package org.example; public class MulitThreadSerizialOut { public static void main(String[] args) { final PrintCls printCls = new PrintCls();

线程池配置的基本信息-爱代码爱编程

线程池类型 1、固定大小线程池 newFixedThreadPool 2、缓存的线程池 newCachedThreadPool 3、单个线程池 newSingleThreadPool 4、newScheduledThreadPool 5、newWorkStealingPool 线程池参数 1、int corePoolS

synchronized锁升级过程_杨大脸i的博客-爱代码爱编程

Java SE 1.6 为了减少获得锁和释放锁带来的性能消耗,引入了 “偏向锁” 和 “轻量级锁”:锁一共有 4 种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。锁可以升级但不能降级。 偏向锁

object o = new object()在内存中占了多少字节?_tiancaizhao的博客-爱代码爱编程

16个字节 markword 8字节 class pointer 4字节(压缩后) || 8字节(未压缩) instance data 0字节 padding 补充4字节 || 0字节 所用依赖 <

threadlocal 深入源码分析&应用场景介绍_架构探险之道的博客-爱代码爱编程

ThreadLocal 深入源码分析&应用场景介绍 文章目录 ThreadLocal 深入源码分析&应用场景介绍 1. 示例代码 2. API 3. ThreadLocal 原理猜想 4. 源码分析 4.1 set() 4.1.1 cre

zookeeper集群实现分布式锁_平平安安年年的博客-爱代码爱编程

zookeeper集群实现分布式锁 在分布式系统中,会出现不同服务访问同一资源的情况,很容易出现读写信息不一致的现象,所以需要用到分布式锁。去哪找一把稳定的、可靠,具备一定性能的锁。zookeeper就能实现,本篇就写一个小demo,依然使用前两篇的zookeeper集群,实现分布式锁。 设计思路 首先我们先解决两个问题 即时性:当一个服务释放锁之

多线程和高并发(1)_为什么要学习多线程和高并发_什么是程序?什么是进程?什么是线程?_创建线程的5种方法-爱代码爱编程

为什么要学习多线程和高并发 作为一名合格的java程序员,面试一定会问到的就是多线程了。而且现在面试的趋势就是“上天和入地”(按照某一位大佬的话来说)。上天: 1.项目经验 2.高并发 缓存 大流量 大数据量的机构设计入地: 1.算法和数据结构(各种基础的算法,各种基础的数据结构是必须的,现在字节的算法考的有多难都不用说了吧) 2.JVM OS 线程 I

java准测试套件—JMH实战入门-爱代码爱编程

JMH实战入门 引言 在多线程中有这样一个思想,就是尽可能的压榨cpu,这里就提到了效率。那么怎么知道一个程序的效率呢,JMH(java Microbenchmark Harness),就是专门测量方法性能好不好的一个工具。有时我们想测试自己写的代码的性能,就不用自己写测试代码,而可以直接用它了。本篇就对其做一个简单的介绍。 JMH使用步骤 这里会

java中的线程池-爱代码爱编程

线程池 引言 上一篇介绍了并发容器,它在线程池中发挥着重要作用,本篇将介绍java中的线程池。 Executor,ExecutorService,AbstractExecutorService Executor是一个接口,只定义一个方法excute,参数是Runnable。这个接口体现了定义与运行的分开,已经告诉了你任务,具体要怎么运行由你自己

java常见并发容器-爱代码爱编程

并发容器 引言 为了应对高并发过程中,数据一致性的问题,java中设计了一些并发容器。本篇将从容器的类别出发,介绍各个容器的特点及原理,为接下来的线程池做准备。 List相关 Vector Vector是最古老的并发容器,其实现了List接口,方法都是默认加synchronized的,所以效率很低,现在基本不会用它。 示例 用到的锁 sync

java引用介绍-强软弱虚-爱代码爱编程

java引用介绍-强软弱虚 引言 此篇介绍下java中四种引用的用法与使用场景。上一篇讲到了ThreadLocal,就有用到弱引用哦。 强引用 定义 强引用就是我们在java中普通使用的引用。当该类型的引用指向一个对象的时候,对象就不会被垃圾回收器进行回收。 实验代码 新建一个类M,重写回收方法,该方法会在对象被垃圾回收时调用。main线程中

ThreadLocal讲解-爱代码爱编程

ThreadLocal讲解 引言 ThreadLocal是和线程息息相关的一个类,从字面意思来看,就是线程+本地,那么其到底是什么,又该怎么使用。接下来我们就来讲解一下。 示例 下面这个小程序中,定义了两个变量tl和str,新起一个线程对其设置值,睡眠3秒后打印这两个值。主线程会修改这两个值的属性。从输出结果可以看到ThreadLocal变量可以起