热文Java并发编程:Synchronized及其实现原理
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个
一、重量级锁 上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monito
为了换取性能,JVM在内置锁上做了非常多的优化,膨胀式的锁分配策略就是其一。理解偏向锁、轻量级锁、重量级锁的要解决的基本问题,几种锁的分配和膨胀过程,有助于编写并优化基于锁的并
PART0: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0
前言 最近公司的项目在陆续升级jdk8,正好想起之前有人问我的jdk8中新增的`LongAdder`类和`AtomicLong`的区别,就忍不住想探究一番。 源码解析 首
技巧: padding long类型 1到7,加x变量,总共 8 \ 8 = 64 个字节 等于 64位计算机 一个内存行的大小。 在多线程操作某一变量的时候,这样利用pad
在计算机行业有一个定律叫"摩尔定律",在此定律下,计算机的性能突飞猛进,而且价格也随之越来越便宜, CPU 从单核到了多核,缓存性能也得到了很大提升,尤其是多核 CPU 技术的
例子:项目A的POM文件有如下依赖声明,optional表示该依赖只影响项目A, 如果有项目B依赖了A,则这两个依赖不会被传递; 因此如果B依赖了A,并且只用到了mysql,
为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内
应用场景 在上一篇kafka的consumer消费者,我们使用的是自动提交offset下标。 但是offset下标自动提交其实在很多场景都不适用,因为自动提交是在ka
前言 storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所
Kafka的介绍 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 Kafka 有如下特性: 以时间复杂度为O
在工作开发中,因为涉及到版本控制,很多android配置文件不小心删掉了。各种报错,也是心累。 在这次编译运行过程中出现了以下问题: 找不到或无法加载主类 org.
<table> <tbody> <tr> <td><font>题目</font></td> </tr> </tbody> </table>
聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,
一、简述 volatile特性:实现最轻量级的同步。 volatile关键字的内存原语主要包含2个: 1、保证volatile修饰的变量对所有线程的可见性
前言 在java并发编程中volatile和synchronized都扮演着重要的角色。两者都起到相同的作用:保证共享变量的线程可见性。与synchronized相比vo
在一次代码拉取中,出现了以下问题:`Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.
SpringBoot对日志的配置和加载进行了封装,让我们可以很方便地使用一些日志框架,只需要定义对应日志框架的配置文件,比如LogBack、Log4j、Log4j2等,代码内部
SpringBoot内置了Servlet容器,这样项目的发布、部署就不需要额外的Servlet容器,直接启动jar包即可。SpringBoot官方文档上有一个小章节[内置ser
<table> <tbody> <tr> <td><font>题目</font></td> </tr> </tbody> </table>
Spring容器创建之后,会调用它的refresh方法,refresh的时候会做很多事情:比如完成配置类的解析、各种BeanFactoryPostProcessor和BeanP
SpringBoot的启动很简单,代码如下: <table> <tbody> <tr> <td> <pre>1 2 3 4 5 6 </pre> </td>