标签:重排序

Java

深入理解Java虚拟机总结

15

Harries 发布于 2018-11-15

基础了解 Java 程序的执行过程:Java 源代码文件(.Java文件)-> Java Compiler(Java编译器)->Java 字节码文件(.class文件)->类加载器(Class Loader)->Runtime Data Area(运行时数...

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

Java

一篇就学会Java中volatile!

zhuangli 发布于 2018-11-14

以上 如果你想了解更多请往下读 一、什么事内存可见性呢? 我们都知道处理器有多个核,每个核都有cache,这样每个核的cache就可能发生不同步的情况,一个核心对这个变量做了修改而另一个核心中因为cache的存在而不知道次变量已经修改。 volatile修饰的变量不允许线程(核)...

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

Java

HashMap以及ConcurrentHashMap(volatile)

Harries 发布于 2018-11-13

1.HashMap怎么实现hashcode和equals HashMap的数据结构是链表+数组,HashMap的数据结构类似于: 元素0->[hashCode=0,key.value=x1的数据] 元素1->[hashCode=1,key.value=y1的数据] ....

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

Java

理解 Java 中的 volatile

2

wenming.gapo 发布于 2018-11-10

标题 neta 自《计算机网络自顶向下》 思维导图 volatile 在 Java 中被称为轻量级 synchronized 。很多并发专家引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。但是如果理解了 volatile 能帮助你写出更好的程序。 当读比...

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

Java

Java设计模式之单例模式

4

刘莉莉 发布于 2018-11-06

一、前期回顾 上一篇《Java设计模式之开篇》介绍了设计的六大原则,分别是,单一职责、里氏替换原则、依赖倒置、迪米特法则、接口隔离、开闭原则。每一个原则都通过定义解释和代码实战进行详细体现,最后也总结了这六大原则,原则是死的,人是活的,我们要根据实际情况是使用六大原则,不要生搬硬...

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

Java

BATJ都爱问的多线程面试题

10

xubiao.zhuang 发布于 2018-11-02

下面最近发的一些并发编程的文章汇总,通过阅读这些文章大家再看大厂面试中的并发编程问题就没有那么头疼了。今天给大家总结一下,面试中出镜率很高的几个多线程面试题,希望对大家学习和面试都能有所帮助。备注:文中的代码自己实现一遍的话效果会更佳哦! 并发编程面试必备:synchronize...

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

Java

圣思园《精通Spring Boot/Cloud》与《精通Java并发》课程现已宣布

yanxinchi 发布于 2018-10-24

0. 序言 2016年12月19日,全新圣思园首门课程《Java 8深入剖析与实战》正式开始发布,这也标志着全新圣思园的回归,是圣思园发展史上的一个里程碑事件;在这之后,圣思园以极其稳健的节奏陆续发布了《精通并发与Netty》、《Kotlin语言深入解析》及《深入理解JVM》等课...

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

Java

读写一致性的一些思考

yeseng 发布于 2018-10-23

先说明下,本文要讨论的多线程读写是指一个线程写,一个或多个线程读,不包括多线程同时写的情况。 更多文章见个人博客: github.com/farmerjohng… 试想下这样一个场景:一个线程往hashmap中写数据,一个线程往hashmap中读数据。 这样会有问题吗?如果有,那...

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

Java

[原]多线程(一)

刘莉莉 发布于 2018-10-23

线程基础 线程和进程 进程是操作系统的基础,是一个程序在一个数据集上运行的过程,也是系统进行资源分配和调度的基本单位。我们可以认为一个进程就是一个应用程序。 线程是操作系统调度的最小单元,程序执行的最小单位,在一个进程中可以创建多个线程。线程拥有独立的堆栈空间,可以共享内存变量。...

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

Java

Java 并发编程的艺术概要

zhuangli 发布于 2018-10-02

重读下《Java并发编程的艺术》,根据目录以及自己的学习习惯,重新排序了目录结构,更容易切入。可以根据这些概要更好的复习与回顾。 1.Java 并发编程基础 1.1 理解线程,分别从 什么是线程、为什么要使用多线程、线程优先级、线程的状态、Daemon线程角度来讲述 1.2 启动...

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

Java

安全并发之先行发生原则

xiaoli.he 发布于 2018-10-01

先行发生原则,可以帮你判定是否并发安全的,从而不必去猜测是否是线程安全了! 如果Java内存模型中所有有序性都靠volatile和synchronized来完成,那么编写代码会很繁琐,但日常Java开发中并没有感受到这一点,正是因为Java语言的“先行发生”原则。这个原则非常重要...

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

Java

定时器的实现原理及参考

puefu.he 发布于 2018-09-30

如果让你来实现一个定时器的功能,简单点就是,每隔n秒,去执行一次A任务,你打算怎么实现? 我觉得一般都能想到,使用一个死循环,然后每次循环比较时间,时间到了就去执行A任务就好了。但是这样会不会有问题?每次循环会不会性能消耗太大?别人都是怎么做的?如果有语言提供的工具,那我自然更加...

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

Java

Java之Map的键,值多重排序问题解决方案

yanxinchi 发布于 2018-09-18

我们知道,Map不同于List,它是无序的,但我们实际工作中某些业务场景是需要Map按照一定的顺序排列组合的,有些需要按键排序,有些则需要按值排序。比如说我们现在返回的Map封装了我们所需要的数据,它的值是无序的,但是我们现在需要将Map按值升序或者降序排列来最终返回我们所要的数...

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

Java

JMM必知必会

1

yanxinchi 发布于 2018-09-18

因为CPU处理的速度比内存读取的速度快很多,通过缓存可以极大的提升CPU处理速度。并且,多级缓存的设计,可以平衡缓存大小与芯片体积、成本,在现代CPU中广泛使用。在多核且多级缓存的条件下,如果多个核同时读写内存的同一行,如何保证数据的一致性? 在处理器级别,内存模型定义了什么条件...

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

Java

史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库

1

xiaoli.wang 发布于 2018-09-14

JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节。 String类能被继承吗,为什么。 String,Stringbuffer,StringBuilder的区别。 ArrayList和LinkedList有什么区别。 讲讲类的实例化顺序,比如父类静态数据,构造函...

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

Java

回顾几个 Java 关键字

songhua.gao 发布于 2018-09-07

static 方法 :一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问。但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。 static 变量 :也称作静态变量,静态变量和非静态变量的区别是:...

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

Java

final关键字深入解析

3

尖兵 发布于 2018-08-31

final关键字在java中使用非常广泛,可以申明成员变量、方法、类、本地变量。一旦将引用声明为final,将无法再改变这个引用。final关键字还能保证内存同步,本博客将会从final关键字的特性到从java内存层面保证同步讲解。这个内容在面试中也有可能会出现。 final使用...

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

Java

啃碎并发(九):内存模型之基础概述

14

邓龙华 发布于 2018-08-30

在并发编程中,需要解决两个关键问题: 线程之间如何通信; 线程之间如何同步; 线程通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种: 共享内存和消息传递 。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式...

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