自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微信搜:import_bigdata,大数据领域硬核原创作者

GitHub搜:https://github.com/wangzhiwubigdata/God-Of-BigData

  • 博客(220)
  • 资源 (1)
  • 收藏
  • 关注

原创 【硬刚JVM】JVM 专题二十三:面试题(一)

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。194.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用:首先通过类加载器(ClassLoader)会把Java代码转换成字节码,运行时数据区(RuntimeDataArea)再把字节码加载到内存中,...

2021-09-26 16:58:16 802

原创 【硬刚JVM】JVM 专题二十二:垃圾回收(六)垃圾回收器 (三)

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。4. GC日志分析4.1 日志分析1.通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略。2.内存分配与垃圾回收的参数列表-XX:+PrintGC:输出GC日志。类似-verbose: gc3.-XX: +PrintGCDetails输出GC的详细日志 4.-XX:+ PrintGCTimeStamps输出GC的时间戳(以基准时间的形式)5.-XX:+...

2021-09-26 16:46:57 492

原创 【硬刚JVM】JVM 专题二十一:垃圾回收(五)垃圾回收器 (二)

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。3. 回收器3.1 Serial回收器:串行回收3.1.1 概述1.Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。2.Serial收集器作为Hotspot中Client模式下的默认新生代垃圾收集器。3.Serial收集器采用复制算法、串行回收和"stop-the-World"机制的方式执行内存回收。4.除了年轻代之外, Serial收集器还

2021-09-25 02:40:24 302

原创 【硬刚JVM】JVM 专题二十:垃圾回收(四)垃圾回收器 (一)

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经产生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。1.1 GC分类1.按线程数(垃圾回收的线程)分可以分为串行垃圾回收器和并行垃圾回收器。串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收

2021-09-25 02:16:37 295

原创 【硬刚JVM】JVM 专题十九:垃圾回收(三)垃圾回收相关概念

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. System.gc()的理解1.在默认情況下,通过System.gc()或者Runtime. getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。2.然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用(仅仅是提醒垃圾回收,会不会回收不一定)。3.JVM实现者可以通过System.gc()调

2021-09-25 02:08:45 339

原创 【硬刚JVM】JVM 专题十八:垃圾回收(二)垃圾回收相关算法

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 标记阶段1.1 引用计数算法1.1.1 对象存活判断1.在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GCオ会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。2.那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对

2021-09-25 01:56:44 261

原创 【硬刚JVM】JVM 专题十七:垃圾回收(一)简述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 什么是垃圾1.1 C++与Java1.2 概述1.垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。2.关于垃圾收集有三个经典问题哪些内存需要回收? 什么时候回收? 如何回收?3.垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃

2021-09-25 01:39:43 277

原创 【硬刚JVM】JVM 专题十六:StringTable

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. String的基本特性1.String:字符串,使用一对""引起来表示。2.String声明为final的,不可被继承。3.String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小。4.String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[

2021-09-25 01:33:41 278

原创 【硬刚JVM】JVM 专题十五:执行引擎

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 执行引擎概述1.1 执行引擎1.2 概述1.执行引擎是Java虚拟机的核心组成部分之一。2.虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。3

2021-09-25 01:13:15 291

原创 【硬刚JVM】JVM 专题十四:本地方法接口

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 本地方法接口2. 什么是本地方法?1.简单来讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。2.在定义一个nati

2021-09-25 00:53:46 268

原创 【硬刚JVM】JVM 专题十三:运行时数据区(八)直接内存

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 直接内存1.不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。2.直接内存是Java堆外的、直接向系统申请的内存区间。3.来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。IO:阻塞式 NIO:非阻塞式4.通常,访问直接内存的速度会优于Java堆。即读写性能高因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存

2021-09-25 00:48:01 276

原创 【硬刚JVM】JVM 专题十二:运行时数据区(七)对象的实例化内存布局与访问定位

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 对象的实例化1.1 创建对象的方式1.new最常见的方式 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法2.Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public3.Constructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求4.使用c

2021-09-25 00:42:16 1101

原创 【硬刚JVM】JVM 专题十一:运行时数据区(六)方法区

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 栈、堆、方法区关系交互运行时数据区结构图:从线程共享与否的角度来看:2. 方法区的理解2.1 方法区在哪里?《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-heap(非堆),目的就是要和堆分开。所以,方法区可以看作是一

2021-09-25 00:33:55 291

原创 【硬刚JVM】JVM 专题十:运行时数据区(五)堆

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 核心概述1.1 堆概述1.一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器、本地方法栈和虚拟机栈。2.一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域| 配置jvm及查看jvm进程3.Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间|...

2021-09-25 00:16:51 309

原创 中国优秀的架构师是不是出现了严重断层?

点击上方蓝色字体,选择“设为星标”回复”面试“获取更多惊喜背景我先说下这篇文章的背景。放假前的晚上,我们技术小组在和产品头脑风暴的时候,提出了一个终极问题:中国优秀的软件架构师是不是出现了...

2021-09-25 00:11:59 4022 5

原创 【硬刚JVM】JVM 专题九:运行时数据区(四)本地方法栈

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1.、本地方法栈2、什么是本地方法栈?1.Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用2.本地方法栈,也是线程私有的。3.允许被实现成固定或者是可动态拓展的内存大小。(在内存溢出方面是相同的)|如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。|如果本地方法栈可以动态...

2021-09-24 23:47:31 280

原创 【硬刚JVM】JVM 专题八:运行时数据区(三)虚拟机栈

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2.虚拟机栈1. 概述1.1 虚拟机栈出现背景由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令1.2 内存中的堆与栈栈是运行时的单位,而堆是存储的单位|栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题..

2021-09-24 23:18:12 290

原创 【硬刚JVM】JVM 专题七:运行时数据区(二)程序计数器

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1.程序计数器1. 什么是PC寄存器(程序计数器)?JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器并不是广义上所指的物理寄存器,是对物理PC寄存器的一种抽象模拟。 它是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域

2021-09-24 22:49:42 285

原创 【硬刚JVM】JVM 专题六:运行时数据区(一)概述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 运行时数据区架构图2. 内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)3. 分区介绍Java虚拟机定义了若干种程序运行期间会使用到的运行时数据

2021-09-24 22:45:03 296

原创 【硬刚JVM】JVM 专题五:类加载子系统(三)补充内容

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。3. 补充内容3.1 在jvm中表示两个class对象是否为同一个类的两个必要条件类的完整类名必须一致,包括包名。 加载这个类的ClassLoader(指ClassLoader实例对象)必须相同|换句话说,在jvm中,即使这两个类对象(class对象)来源同一个Class文件,被同一个虚拟机所加载,但只要加载它们的ClassLoader实例对象不同,那么这两个类对象也是不相等的.|自定..

2021-09-24 22:42:03 276

原创 【硬刚JVM】JVM 专题四:类加载子系统(二)双亲委派机制

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2. 双亲委派机制2.1 双亲委派机制工作原理2.1.1 原理Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存,生成class对象。 加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。2.1.2 举例说明1.自定义一个java.lang.String,然后在另

2021-09-24 22:39:59 339

原创 【硬刚JVM】JVM 专题三:类加载子系统(一)类装载器子系统

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。类装载器子系统1.1 什么是类装载子系统?类装载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识(魔数)。 类装载器子系统(ClassLoader)只负责Class文件的加载,至于它是否可以运行,则由Execution Engine决定。|你妈妈[ClassLoader]给你[Execution Engine]找到相亲姑娘,是否能成得看你自己的本事.

2021-09-24 22:37:18 452

原创 【硬刚JVM】JVM 专题二:虚拟机(二)Java虚拟机

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2.1 什么是Java虚拟机?Java虚拟机是一台执行字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收机制,以及可靠的即时编译器。 Java技术的核心就是Java虚拟机,因为所有的Java程序都运行在Java虚拟机内部。 |可以这样理解JVM类似于一台小电脑运行在...

2021-09-24 22:16:27 403

原创 【硬刚JVM】JVM 专题一:虚拟机(一)

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 虚拟机1.1 什么是虚拟机?虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 所谓虚拟机,就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。1.2 虚拟机可以分为两类:系统虚拟机:它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台,比如Visual Box,VMware。

2021-09-24 22:11:35 448

原创 【硬刚Java并发】JUC基础(24):Fork/Join分支合并框架

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 Fork/Join 框架简介  Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join 框架要完成两件事情:1.任务分割:首先 Fork/Join 框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割2.执行任务并合并结果:分割的子任务分别放到双端队列里,然后几个启

2021-09-24 04:18:38 303

原创 【硬刚Java并发】JUC基础(23):ThreadPool 线程池

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 线程池简介  线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。例子: 10 年前单核 CPU 电脑,假的多线程,像马戏团小丑玩多个球,CPU 需要来回切换。 现

2021-09-24 04:15:39 303

原创 【硬刚Java并发】JUC基础(22):BlockingQueue阻塞队列

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 BlockingQueue 简介  Concurrent 包中,BlockingQueue 很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了 BlockingQueue 家庭中的所有成员,包括他们各自的功能以及常见使用场景。阻塞队列,顾名思义,首先它是一个队列, 通过一个共享的队列,

2021-09-24 04:12:44 274

原创 【硬刚Java并发】JUC基础(21):ReentrantReadWriteLock读写锁

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 读写锁介绍  现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。针对这种场景,JAVA 的并发包提供了读写锁 ReentrantReadWriteLock,它表示两个锁,一个是读

2021-09-24 04:08:19 378

原创 【硬刚Java并发】JUC基础(20):JUC强大的辅助类

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 减少计数 CountDownLatch  CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法之后的语句。  CountDownLatch 主要有两个方法,当一个或多个线程调用 await 方法时,这些线程会阻塞  其它线程调用 countDown 方

2021-09-24 04:06:58 299

原创 【硬刚Java并发】JUC基础(19):Callable 接口

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。  目前我们学习了有两种创建线程的方法-一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们无法使线程返回结果。为了支持此功能,Java 中提供了 Callable 接口。==现在我们学习的是创建线程的第三种方案---Callable 接口==Callable 接口的特点如下(

2021-09-24 04:04:23 308

原创 【硬刚Java并发】JUC基础(18):多线程锁

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。锁的八个问题演示/*** @Description: 8 锁 *1 标准访问,先打印短信还是邮件------sendSMS------sendEmail2 停 4 秒在短信方法内,先打印短信还是邮件------sendSMS------sendEmail3 新增普通的 hello 方法,是先打短信还是 hello------getHello------sendSMS4 现

2021-09-24 04:00:46 292

原创 【硬刚Java并发】JUC基础(17):集合的线程安全

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 Vector  Vector 是矢量队列,它是 JDK1.0 版本添加的类。继承于 AbstractList,实现了 List, RandomAccess, Cloneable 这些接口。 Vector 继承了 AbstractList,实现了 List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。 Vector 实现了 RandmoAccess 接口,即提供了随机访问功能。

2021-09-24 03:57:27 264

原创 【硬刚Java并发】JUC基础(16):线程间通信

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析场景---两个线程,一个线程对当前数值加 1,另一个线程对当前数值减 1,要求用线程间通信==问题: A 线程打印 5 次 A,B 线程打印 10 次 B,C 线程打印 15 次 C,按照此顺序循环 10 轮==...

2021-09-24 03:53:35 276

原创 【硬刚Java并发】JUC基础(15): Lock 接口

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 Synchronized1.1 Synchronized 关键字回顾synchronized 是 Java 中的关键字,是一种同步锁。它修饰的对象有以下几种:1.修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;2.修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象

2021-09-24 03:52:28 268

原创 【硬刚Java并发】JUC基础(14):JUC概述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 JUCJUC就是 java.util .concurrent 工具包的简称。2 进程与线程概念2.1进程与线程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某...

2021-09-24 03:49:32 308

原创 【硬刚Java并发】JUC基础(13):简介

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。

2021-09-24 03:47:32 248

原创 【硬刚Java并发】JUC基础(十二):ForkJoinPool 分支/合并框架

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1Fork/Join 框架Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个的小任务运算的结果进行 join 汇总。2 Fork/Join 框架与线程池的区别采用 “工作窃取”模式(work-stealing):当执行新的任务时它可以将其拆分分成更小的任务执行,并将小任务加到线程队列中,然后再从一个随机..

2021-09-24 03:46:37 270

原创 【硬刚Java并发】JUC基础(十一):线程调度

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 ScheduledExecutorService一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。package com.atguigu.juc;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.Executors;impo

2021-09-24 03:44:52 263

原创 【硬刚Java并发】JUC基础(十):线程池

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。线程池第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法。每个 ThreadPoolExecutor 还维护着一些基本的

2021-09-24 03:43:36 286

原创 【硬刚Java并发】JUC基础(九):线程八锁

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Java并发部分补充。1 线程八锁一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法 锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法 加个普通方法后发现和同步锁无关 换成两个对象后,不是

2021-09-24 03:41:45 257

大数据面试大总结300页.zip

大数据面试大总结300页.zip

2021-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除