![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 92
猿界零零七
这个作者很懒,什么都没留下…
展开
-
Java并发编程之volatile关键字详解
volatile是Java语言提供的一个关键字,可用来修饰变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。volatile的使用与Java内存模型(JMM)有很大关系,不熟悉JMM的,请查看:Java并发编程之Java内存模型注:下文中提到的本地内原创 2021-12-05 10:47:59 · 415 阅读 · 0 评论 -
Java基础篇——集合
1、什么是集合Java 的集合就像一个容器,用来存储 Java 类的对象。2、集合与数组的区别长度:集合长度可变;数组长度固定。保存对象:集合只能保存引用数据类型;数组既可以保存引用数据类型,又可以保存基本数据类型元素内容:集合可以保存不同类型的数据(其实在使用中也是保存同一类型的数据,使用泛型限制);数组保存同一类型数据3、集合包含哪些包含:List、Set、Map4、List和Set的区别有序性:List有序;Set无序。唯一性:List元素可以重复;S原创 2021-12-04 15:33:56 · 563 阅读 · 0 评论 -
Java并发编程之Java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式,用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Ja原创 2021-12-04 14:59:04 · 225 阅读 · 0 评论 -
Java并发编程之基础
一、进程与线程1.1、进程进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志。1.2、线程线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器原创 2021-12-03 22:15:10 · 566 阅读 · 0 评论 -
Java并发编程之ReentrantLock
一、概述在Java5之前,Java多线程中可以使用synchronized隐式锁实现线程之间同步互斥。Java5中提供了Lock类(显示锁)也可以实现线程间的同步,而且在使用上更加方便。本文主要研究ReentrantLock的使用。1.1、ReentrantLock与synchronized比较1)ReentrantLock和synchronized都是独占锁,只允许线程互斥的访问临界区。但是实现上两者不同:synchronized加锁解锁的过程是隐式的,用户不用手动操作,优点是操作简单,但显得原创 2021-12-03 16:29:58 · 650 阅读 · 0 评论 -
Java并发编程之AQS
一、概述AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,如常用的ReentrantLock、Semaphore、CountDownLatch...... 这里我们通过AQS的类图先看一下大概,下面我们总结一下AQS的实现原理。二、框架AQS维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。.原创 2021-12-03 11:58:47 · 526 阅读 · 2 评论 -
Java并发编程之CountDownLatch
一、概述作用:可以用来确保某些活动直到其他活动都完成后才继续执行。它一个同步工具,一般被称作"计数器",作用大致就是数量达到了某个点之后计数结束,才能继续往下走。可以用作流程控制之类的作用,主流程分成多个子流程,然后主流程在子流程全部结束之前不动(子流程最好是相互独立的,除非能很好的控制两个流程的关联关系),子流程全部结束后主流程开始操作。应用场景:CountDownLatch非常适合于对任务进行拆分,使其并行执行,比如某个任务执行2s,其对数据的请求可以分为五个部分,那么就可以将这个任务拆分为5个子任原创 2021-12-02 16:30:02 · 3946 阅读 · 0 评论 -
Java基础篇——数组
1、什么是数组2、一维数组2.1、声明和创建2.2、初始化2.3、遍历2.4、内存分析3、二维数组3.1、声明和创建3.2、初始化3.3、遍历3.4、内存分析4、多维数组原创 2021-08-28 16:26:39 · 359 阅读 · 0 评论 -
Java基础篇——面向对象之三大基本特征
目录1、面向对象思想1.1、面向对象定义1.2、面向对象与面向过程的区别1.3、类的对象2、三大基本特征2.1、封装2.2、继承2.3、多态多态优点:多态存在三个必要条件:3、补充:抽象Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装、继承、多态。封装是 Java 类的编写规范,继承是类与类之间联系的一种形式,而多态为系统组件或模块之间解耦提供了解决方案。1、面向..原创 2021-08-25 16:32:00 · 911 阅读 · 0 评论 -
Java基础篇——特殊关键字
Java语言中定义了很多关键字,比如this、supper、static、final、public、private等等。不同的关键字的用途不同,相同关键字用在不同的地方,作用也不同。本章挑选一些特殊关键字,分析它们的用法和用途。1、this关键字this表示对当前对象的引用,指向的是当前对象。当前对象指的是当前正在调用实例的成员对象,换言之:谁调用了方法,谁就是当前对象。用法:调用类中的属性:this.属性名称,指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)。可以在构造方法原创 2021-08-24 20:58:25 · 601 阅读 · 0 评论 -
Java基础篇——运算符
目录运算符优先级表"&&"和"&""i++"和"++i"计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。运算符优先级表 优先级 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 .原创 2021-08-23 22:12:23 · 414 阅读 · 0 评论 -
Java基础篇——StringBuilder类和StringBuffer类
和String类型一样,StringBuilder类、StringBuffer类也是用来操作字符串的类。继承关系图:和String类不一样,使用 StringBuilder类或 StringBuffer 类时,每次都会对对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuilder类或StringBuffer 类。StringBuilder 类在 Jdk5 中被提出,它和 StringBuffer(据说最早的jdk版本中就有这个类) 之间的最大不同在.原创 2021-08-23 11:45:27 · 306 阅读 · 0 评论 -
Java基础篇——String类
String类是一个很常用的类,它位于java.lang包下,是Java语言的核心类,用来保存代码中的字符串常量的,并且封装了很多操作字符串的方法。下面看一个定义String类型变量并初始化的例子:String str = "abc";从上面代码中可以看出,String类型的变量可以像基础数据类型的变量一样,可以不使用new关键字创建对象,貌似直接把字符串“abc”赋值给了str变量。那么,变量str中保存的是“abc”还是“abc"的引用?为什么不用new String("abc")的方式创建S原创 2021-08-22 20:18:53 · 854 阅读 · 0 评论 -
java中“==“与equals的区别
首先“==”是运算符号,比较的是“==”两边变量的值;equals是Object类的一个方法,Object是所有类的父类,所以所有类都可以使用equals方法,在没有被重写的情况下,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。下面看一段代码package com.flychuer;public class TestMain { public static void main(String[] args) { int a1 = 10;原创 2021-08-20 22:38:47 · 497 阅读 · 0 评论