首页
全部分类
文章归档
关于我
1
用户体验---5W1H模型
2
用户体验---心流体验模型
3
用户体验---用户体验五要素
4
[转]为什么看起来没人情味美团外卖赢了?
5
重构---重构的手法
敢敢雷
永言配命,自求多福
累计撰写
57
篇文章
累计创建
0
个标签
累计收到
2
条评论
栏目
首页
全部分类
文章归档
关于我
搜索
目 录
CONTENT
以下是
Java基础
相关的文章
等待多线程完成的CountDownLatch
CountDownLatch允许一个或者多个线程等待其他线程完成操作。先看CountDownLatch一个简单小DemoDemo简单一点,以英雄联盟开五黑为例子,五黑需要五个人才能发车。代码如下public class CountDownLatchDemo { public static vo
2020-02-02
125
0
0
Java基础
JDK源码
队列同步器---AbstractQueuedSynchronizer
队列同步器—AbstractQueuedSynchronizer(以下简称AQS),在Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷
2020-02-02
429
0
0
Java基础
JDK源码
并发安全的CopyOnWriteArrayList
CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现,每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离。内部的主要实现主要是通过ReentrantLock加锁和一个volatile修饰
2020-01-28
108
0
0
Java基础
JDK源码
探索HashMap
HashMap都清楚,许多面试宝典都介绍,HashMap底层在JDK1.7和JDK1.8的实现不同,1.8加入了红黑树的结构。下面就根据面试宝典的介绍,来看下源码。HashMap中的数组第一个结构是它的数组,看下源码是怎么定义它的。// 数组,又叫作桶(bucket)transient Node&l
2020-01-14
365
0
0
Java基础
JDK源码
备战春招---JVM
学习来源—深入理解Java虚拟机(周志明)面经来源—牛客2020秋招面经大汇总!JVMJava程序开发相对于C和C+ + 程序开发,在内存管理领域,记得一个比喻,Java是自动挡,C和C+ + 是手动挡。Java在虚拟机自动内存管理机制帮助下,不需要为每一个new操作去写内存释放代码,不容易出现内存
2019-12-28
140
0
0
Java基础
JVM
JAVA并发编程的艺术(10)并发编程基础
这是《JAVA并发编程的艺术》(方腾飞)第四章的内容,这里主要做下总结。线程简介什么是线程每启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里可以创建多个线程,这个线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存
2019-12-06
365
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(9)深入分析DCL
DCL,即Double Check Lock,双重检查锁定。DCL很多人在单例模式中用过,博主之前面试的时候,就遇到过手写一个单例,然后饿汉和懒汉都手撕了一遍,但是面试管当时好像不是很满意,于是机智的博主赶紧指出了懒汉的线程安全问题,加上双重校验锁。现在就分析下为什么要加上DCL。懒汉单例先看代码p
2019-12-05
385
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(8)final域
final域的读和写像是普通的变量访问。final域的重排序规则对于final域,编译器和处理器要遵守两个重排序规则。在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,
2019-12-04
575
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(7)根据JMM分析volatile
当声明变量为volatile后,对这个变量的读/写将会很特别。volatile是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java内存模型在并发编程中我们一般都会遇到这三个基本概念:原子性
2019-12-04
349
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(6)重排序
重排序是值编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序其实这两点可以归结于一点:无法通过happens-before原则推导出来的,JMM
2019-12-04
368
0
0
Java基础
并发编程基础
1
2
3