摘要: 首先要明白每一个线程都是有自己单独的内存区域来执行操作的,也就是有单独的计数器,单独的局部变量等。多线程之间的共享对象,如果在多线程环境下不做特殊处理是极易出问题的。现在主要说的是线程交互之间的可见性。 那什么是可见性呢,简单来说就是纸某个线程修改共享变量的指令对其他线程来说都可见的,它反映的是指令 阅读全文
posted @ 2020-04-30 08:21 joimages 阅读(135) 评论(0) 推荐(0)
摘要: 像之前我们说的 synchronized 这种独占锁属于悲观锁。什么是悲观锁呢?简单来说,它是在悲观的认为加锁的这个地方一定会发生冲突。除了悲观锁之后,还有乐观锁,乐观锁的含义就是我乐观的认为这个的地方不会发生冲突,如果没有发生冲突我就正常执行,如果发生了冲突,我就重试。 CAS(compare a 阅读全文
posted @ 2020-04-27 08:25 joimages 阅读(163) 评论(0) 推荐(0)
摘要: 一个对象是否是线程安全的,取决于它是否被多个线程访问。要是的对象是线程安全的,需要采用同步机制来协同对 对象 可变状态的访问。当一个线程访问某个状态变量并且其中有一个或多个线程执行写入操作时,必须采用同步机制来协同这些线程对变量的访问。Java中的主要同步机制是关键字 synchronized 。 阅读全文
posted @ 2020-04-24 17:08 joimages 阅读(196) 评论(0) 推荐(0)
摘要: 多线程知识梳理(1):当我们谈到指令乱序的时候,在谈什么? 结论 我喜欢先说结论。 程序里面的每行代码的执行顺序,有可能被编译器和CPU根据某种策略给打乱掉。目的是为了性能的提升,让指令的执行能尽可能的并行起来。 可能发生乱序的地方 在Java代码运行过程中,有三处地方会发生指令乱序。 1. 代码编 阅读全文
posted @ 2020-04-23 19:17 joimages 阅读(469) 评论(0) 推荐(0)
摘要: LeetCode刷题记录本 "两数之和" 难度 :简单 描述 :给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例 解题思路 可以看到题目给的前提 阅读全文
posted @ 2020-04-16 15:01 joimages 阅读(161) 评论(0) 推荐(0)
摘要: 迭代器模式 迭代器模式应该是所有的设计模式中,应用程度最广的一个,广到Java本身就已经对绝大多数的集合类支持了这个这种设计模式,也就是在开发过程中常见的迭代器(Iterator) UML 主要角色 迭代器接口 迭代器接口声明了迭代器的四个主要功能,分别是: 1. 将指标移动到第一个位置 2. 将指 阅读全文
posted @ 2020-01-14 15:25 joimages 阅读(204) 评论(0) 推荐(0)
摘要: corePoolSize 表示常驻核心线程数量。 maximumPoolSize 表示线程池中能同时执行的最大线程数量。这个值必须大于等于corePoolSize,如果这两个值相等,那就是固定大小的线程池 keepAliveTime 表示线程池中除常驻核心线程之外的其他线程的空闲时间,如果超过这个时 阅读全文
posted @ 2019-12-19 11:17 joimages 阅读(2426) 评论(0) 推荐(0)
摘要: SpringBoot 项目如何打成 war 包 SpringBoot项目的默认打包方式是将工程打包成为一个 jar 包。部分情况下,我们需要将项目打包成一个 war 包,以方便我们将工程部署在 tomcat 上运行。 那如何将 SpringBoot 项目打包成一个 war 包呢? pom 文件修改 阅读全文
posted @ 2019-12-18 14:08 joimages 阅读(2221) 评论(0) 推荐(0)
摘要: 扫扫盲 只要是参加过Java培训或Java开发工作的同学,肯定或多或少的都知道线程池。 线程池的优势就是避免让你无限制的创建很多很多的线程,而且不需要频繁的创建和删除线程。 那线程池的工作原理到底是什么呢? 这里举一个简单的例子: 这段代码的意思是创建一个只能容纳三个线程的线程池。 这个3就是cor 阅读全文
posted @ 2019-12-18 10:28 joimages 阅读(150) 评论(0) 推荐(0)
摘要: AQS 简介 java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于 阅读全文
posted @ 2019-12-17 09:30 joimages 阅读(1005) 评论(0) 推荐(1)