Java
文章平均质量分 90
blue_zy
个人网站1:www.bluelzy.top
个人网站2:www.bluelzy.com
展开
-
Java高级 - 多线程锁和同步问题
前言继上一篇Java高级 - 多线程必知必会之后,我们继续聊一下多线程编程中经常会遇到的同步问题以及对应的解决方式。首先提一下内存可见性,因为这个涉及到为什么会出现线程的同步问题。内存可见性这里引用一幅图来说明:引用自: http://concurrent.redspider.group/article/02/6.html由于在Java里面,Java的内存模型规定所有共享变量都存放在主内存中,而每个线程都会把用到的变量从主内存复制到自己的工作内存中。在线程中读写的变量其实都是自己工作内存的原创 2020-07-20 23:43:47 · 485 阅读 · 0 评论 -
Java高级 - 多线程必知必会
什么是线程在电脑打开任务管理器,我们能看到一个个的进程,这些就是计算机运行中的程序。而线程,则是进程中的一个实体,换句话说,线程是依附进程而存在的。从操作系统的角度来说,线程就是CPU分配的基本单位。从JVM的角度来说,它可以被看作是执行Java代码的最小单位。我们在执行main()方法的时候其实就是启动了一个JVM的进程,而main()方法所在的线程就是这个进程中的主线程。由于线程是进程的一个实体,因此一个进程可以包含多个线程,多个线程之间共享进程的堆和方法区,但是每个线程都有自己的程序计数器和栈。原创 2020-07-19 10:55:01 · 237 阅读 · 0 评论 -
Java源码分析 - HashMap常用方法和扩容算法
前言本文对HashMap(JDK1.8)的源码进行分析,包括以下几个部分:常用方法(put(), get(), containsKey(), containsValue(), remove())内部类(entrySet())底层基本数据结构以及扩容算法解析什么是HashMapHashMap是基于数组扩展实现的通过<K,V> 通过这种键值对映射的方式来存储数据的一种数据结构。因此它具有在O(1)时间查找元素的效率。HashMap有几个基本概念:Hash函数:也称为散列函数,原创 2020-07-06 00:11:43 · 451 阅读 · 1 评论 -
Java源码分析 - LinkedList
什么是LinkedList和ArrayList不同,LinkedList是基于链表实现的线性数据结构。节点之间访问不是通过下标进行,而是通过指针。同时,LinkedList实现了List接口和Deque接口。在Deque接口中提供了许多有用的方法,我们下面会选一些详细说。这是LinkedList里面Node结构(静态内部类): private static class Node<E> { E item; Node<E> next;原创 2020-07-03 22:22:06 · 3139 阅读 · 0 评论 -
Java源码分析 - ArrayList
ArrayList是什么public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ // ...}继承AbstractList - 说明本身数据结构是列表实现List, RandomAccess, Cloneable, Serializable 这几个接口原创 2020-07-03 00:34:30 · 3370 阅读 · 0 评论 -
Java基础-枚举
什么是枚举在Java中,我们可以这样定义一个枚举类:public enum Size { SMALL, NORMAL, LARGE}这段代码的意思是:创建一个用来表示尺寸的枚举类,里面有大中小三种不同的尺寸。在代码层面的含义则是:创建了一个枚举类,里面有三个不同的对象。问题1:为什么说是三个不同的对象呢?既然是对象,那么自然就有构造方法了,因此我们也可以这样来定义一个枚举类: public enum Size { SMALL("1"), NORMA原创 2020-07-01 23:04:15 · 258 阅读 · 0 评论 -
Java基础-多线程
多线程Java基础的第五篇,也是最后一篇-多线程1.线程的创建和启动通过集成Thread类创建线程类定义Thread类的子类,并重写run()方法 创建Tread子类的实例 调用start()方法启动线程 举个例子: public class FirstThread extends Thread { private int i; publi...原创 2018-06-05 21:34:13 · 147 阅读 · 0 评论 -
Java基础-类加载机制与反射
类加载机制与反射Java基础第四篇-类加载机制与反射1.类的加载、连接和初始化JVM和类一个Java程序启动一个Java虚拟机进程,当系统被终结时,JVM进程也会被终止。 有以下几种情况: 程序运行到最后正常结束 程序使用System.exit()结束程序 程序遇到未捕获的异常或者错误而结束 程序平台强制结束了JVM进程 ...原创 2018-06-05 15:28:20 · 276 阅读 · 0 评论 -
Java基础-IO
Charter 15 输入/输出主要是总结了一下文件操作以及序列化,NIO。1.File类访问文件名相关的方法: String getName() String getPath() File getAbsoluteFile() String getAbsolutePath() String getParent() 文件...原创 2018-06-04 16:22:52 · 177 阅读 · 0 评论 -
Java基础-集合
Java集合Java基础第二篇-集合1 集合概述集合类主要由两个接口派生:Collection和Map Set:无序集合,不可重复 Queue:队列 List:有序集合,可以重复 2.Collection和Iterator接口Collection接口是List Set Queue接口的父接口,常用的有以下方法: boolean add(Object o...原创 2018-06-03 12:01:01 · 177 阅读 · 0 评论 -
Java基础-泛型
泛型这是Java基础的第一篇,泛型。1. 入门:泛型的引入是为了让Java能够记住集合中的数据类型,而不是统一用Object来处理。 例如: public class ListErr { public static void main(String[] args) { List strList = new ArrayList(); ...原创 2018-06-02 22:20:52 · 195 阅读 · 0 评论