标签:synchronized

Java

Java面经分类以及总结(2)–思考

5

changyuan.xu 发布于 2019-09-17

hashmap是一个非线程安全的集合。 他的线程不安全出现在,并发情况下可能会出现链表成环的问题,导致程序在执行get操作时形成死循环。 hashmap成环原因的代码出现在transfer代码中,也就是扩容之后的数据迁移部分 解决问题: 使用synchronize ,或者使用co...

阅读(7)评论(0)赞 (0)

Java

java架构之路-(源码)mybatis的一二级缓存问题

6

邓龙华 发布于 2019-09-17

上次博客我们说了mybatis的基本使用,我们还捎带提到一下Mapper.xml中的select标签的useCache属性,这个就是设置是否存入二级缓存的。 回到我们正题,经常使用mybatis的小伙伴都知道,我们的mybatis是有两级缓存的,一级缓存默认开启,我们先来一下一级...

阅读(8)评论(0)赞 (0)

Java

JDK13 GA发布:5大特性解读

3

尖兵 发布于 2019-09-17

JDK13 GA版本 5大新特性如下: 350: Dynamic CDS Archives 351: ZGC: Uncommit Unused Memory 353: Reimplement the Legacy Socket AP I 354: Switch Expressio...

阅读(5)评论(0)赞 (0)

Java

警惕,mybatis的size()方法竟然有坑!

2

xirruiqiang 发布于 2019-09-17

来源: http://h5ip.cn/aJgJ Mybatis是一个开源的轻量级半自动化ORM框架,使得面向对象应用程序与关系数据库的映射变得更加容易。MyBatis使用xml描述符或注解将对象与存储过程或SQL语句相结合。Mybatis最大优点是应用程序与Sql进行解耦,sql...

阅读(8)评论(0)赞 (0)

Java

volatile理解

xiaoli.he 发布于 2019-09-17

cpu怎么与缓存的操作 cpu会先从缓存中的缓存行读取内存值(不是内存地址),如果缓存没有命中,那么就从主内存中获取值,并且将获取到的值写入缓存行 volatile修饰符 volatile修饰过的变量转换成汇编语言会有个lock指令 lock指令会引发下面的情况: (1)、锁定当...

阅读(6)评论(0)赞 (0)

Java

Docker下Jedis体验

4

zhuangli 发布于 2019-09-17

jedis是redis的java版本的客户端实现,本文通过一些web请求&响应的实例展示了jedis的基本用法; 开始编码前我们先把环境准备好,总共两个server,对应两个docker容器: redis,采用redis的3.2.8版本,本次实战用的是redis单机; t...

阅读(10)评论(0)赞 (0)

Java

可见性有序性,Happens-before来搞定

4

changyuan.xu 发布于 2019-09-17

写在前面 上一篇文章 并发 Bug 之源有三,请睁大眼睛看清它们 谈到了 可见性/原子性/有序性 三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 擅自 初衷是好的,但引发了新问题,最有效的办法就禁止缓存和编译优化,问题虽然能解决,但「又回到最初的起点,...

阅读(4)评论(0)赞 (0)

Java

Java性能 — 线程上下文切换

1

puefu.he 发布于 2019-09-16

在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行 线程数量设置太小,会导致程序不能充分地利用系统资源 线程数量设置 太大 ,可能带来资源的 过度竞争 ,导致 上下文切换 ,带来的额外的 系统开销 上下文切换 在单处理器时期,操作系统就能处理 多线程并发 任务,处理器...

阅读(13)评论(0)赞 (0)

Java

Java线程状态

16

Harries 发布于 2019-09-16

0 线程状态概述 分类 6个状态定义: java.lang.Thread.State New: 尚未启动的线程的线程状态。 Runnable: 可运行线程的线程状态,等待CPU调度。 Blocked: 线程阻塞等待监视器锁定的线程状态。 处于synchronized同步代码块或方...

阅读(9)评论(0)赞 (0)

Java

Synchronized 实现原理

20

xirruiqiang 发布于 2019-09-16

锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循Happens-before原则(锁规则:解锁必然发生在随后的加锁之前) 锁在Java中的具体表现是 Synchronized 和 Lock 锁的释放 线程A释放锁后,会将共享变更操作刷新到主内存...

阅读(15)评论(0)赞 (0)

Java

Motan系列-Motan的SPI插件扩展机制

1

小丁 发布于 2019-09-16

推荐一款一站式性能监控工具(开源项目) Pepper-Metrics 是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dubbo/servlet)集成,收集并计算metrics,并支持输出到日志及转换成多种时序数...

阅读(10)评论(0)赞 (0)

Java

Android内存模型与垃圾回收

11

yeseng 发布于 2019-09-16

引言 接 App优化之内存优化(序) , 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Android内存管理, Dalvik/ART等知识有一个理论的认识, 可以让我们更好...

阅读(10)评论(0)赞 (0)

Java

Java 线程生命周期

3

xiaoli.wang 发布于 2019-09-16

关注公众号 JavaStorm 在操作系统层面,线程也有 【生命周期】,这是并发编程的基础我们需要掌握其中 生命周期中各个节点的状态转换机制 以及持有锁状态。文本将会介绍系统的周期以及在 Java编程语言的生命周期区别。打通并发编程任督二脉需要将基本心法牢牢掌握。 通用的生命周期...

阅读(8)评论(0)赞 (0)

Java

Java 谜题 2:梦境

xiaoli.wang 发布于 2019-09-16

你有没有从梦中醒来,然后发现你真的还在做梦?如果你醒来,你怎么知道你回到了现实?这个难题实现了该问题的解决方案:当您进入和退出梦想时,您可以计算梦境的递归级别: package sleep; import...

阅读(14)评论(0)赞 (0)

Java

一文读懂类加载机制

3

xirruiqiang 发布于 2019-09-16

类记载过程 多个java文件经过编译打包生成可运行的jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到jvm。 主类在运行过程中如果使用到其他类,会逐步加载这些类。 注意,jar包里的类不是一次性全部加载的,是使用时才加载的。 从...

阅读(10)评论(0)赞 (0)

Java

并发之初章Java内存模型

5

changyuan.xu 发布于 2019-09-16

》》》》》》 博客地址 《《《《《《 》》》》》》 首发博客 《《《《《《 前言 首先我们在了解java内存模型之前先看一下计算机内存模型,理解了计算机内存模型的话后面在看JMM就会简单的多,上篇文章我是直接写的。 计算机内存 计算机是由CPU、主存、磁盘等组成的(简单引出问题熬...

阅读(8)评论(0)赞 (0)

Java

Java 并发编程(二):如何保证共享变量的原子性?

2

xubiao.zhuang 发布于 2019-09-16

线程安全性是我们在进行 Java 并发编程的时候必须要先考虑清楚的一个问题。这个类在单线程环境下是没有问题的,那么我们就能确保它在多线程并发的情况下表现出正确的行为吗? 我这个人,在没有副业之前,一心扑在工作上面,所以处理的蛮得心应手,心态也一直保持的不错;但有了副业之后,心态就...

阅读(5)评论(0)赞 (0)

Java

Tomcat 中的 Session 和 Cookie

1

xiaoli.wang 发布于 2019-09-16

HTTP 是一种 无状态 通信协议,每个请求之间相互独立,服务器不能识别 曾经来过 的请求。而对于 Web 应用,它的活动都是 依赖某个状态 的,比如用户登录,此时使用 HTTP 就需要它在一次登录请求后,有为后续请求提供已登录信息的能力。本文首发于公众号 顿悟源码 . 解决办法...

阅读(13)评论(0)赞 (0)