【Java例外原理】教程文章相关的互联网学习教程文章

深入源码分析 Java 线程池的实现原理【代码】【图】

程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。 网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望通过学习线程池原理,明白所有 池化技术 的基本设计思路。遇到其他相似问题可以解决。 池化技术 前面提到一个名词——池化技术,那么到底什么是池化技术呢? 池化技术简单点来说,就是提...

深入源码分析Java线程池的实现原理【图】

程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望通过学习线程池原理,明白所有池化技术的基本设计思路。遇到其他相似问题可以解决。池化技术前面提到一个名词——池化技术,那么到底什么是池化技术呢?池化技术简单点来说,就是提前保存...

Java 并发编程:volatile的使用及其原理【代码】【图】

一、volatile的作用在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。而volatile关键字就是Java中提供的另一种解决可见性和有序性问题的方案。...

深入Java源码理解线程池原理【代码】【图】

程序运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池是对CPU的利用的优化手段。网上有不少介绍如何使用线程池的文章,那我想说点什么呢?我希望查看线程池原理,明白池化技术的基本设计思路。遇到其他相似问题可以解决。池化技术何为池化技术,简单点来说,就是提前保存大量的资源,以备不时之需。在资源有限的情况下,该技术可以大大提升...

java程序的运行原理

由java命令启动JVM,而JVM启动就相当于启动了一个进程,接着由该进程创建了一个主线程去调用main方法。 JVM的启动时单线程还是多线程的?多线程的,启动了主线程和垃圾回收线程(java默认的垃圾回收机制)

Java集合Collection之实现原理解读(LinkedList)

一、简介 LinkedList与ArrayList一样都实现了List接口,不过LinkedList底层实现是双向链表,对于插入、修改、删除速度比较快,对于查询就比较慢,因为要循环遍历查找。本章将模仿LinkedList源码实现一个简单的自定义LinkedList,以帮助饿哦们理解LinkedList底层是怎么实现的。 二、实现原理 LinkedList底层是通过双向链表实现的,通过一系列的节点Node串成一条链结构,一般操作思想就是找到索引对应的元素,找到前一节点previous和...

深入理解Java并发之synchronized实现原理

关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java类加载器(ClassLoader) 深入理解Java并发之synchronized实现原理 Java并发编程-无锁CAS与Unsafe类及其并发包Atomic 深入理解Java内存模型(JMM)及volatile关键字 剖析基于并发AQS的重入锁(ReetrantLock)及其Condition实现原理 剖析基于并发AQS的共享锁的实现(基于信号量Semaphore) 并发之阻塞队列...

Java LinkedList工作原理及实现【代码】【图】

1. 概述以双向链表实现。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。 按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。 插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作—add(), addFirst(),removeLast()或用iterator()上的remove()能省掉指针的移动。LinkedList是一个...

线程池实现原理(Executor框架),java提供常用的几种线程池、死锁产生条件和避免

为什么使用线程池 服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。如果每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。在一个 JVM 里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度”。 线程...

LOCK前缀指令篇(二):Java CAS原理及AtomicInteger的实现

LOCK前缀指令篇(二):Java CAS原理及AtomicInteger的实现 目录 LOCK前缀指令篇(二):Java CAS原理及AtomicInteger的实现 一、Java的CAS实现原理 二、AtomicInteger的实现原理 一、Java的CAS实现原理 JAVA中的CAS操作都是通过sun包下Unsafe类实现,而Unsafe类中的方法都是native方法,由JVM本地实现,笔者为了弄清楚真正的实现原理,以AtomicInteger(需要CAS操作)为例,查看了openJDK7的源码:UNSAFE_ENTRY(jboolean, Unsafe_Co...

【深入理解java集合】-LinkedList实现原理【图】

一、LinkeddList简介1、LinkedList概述 LinkedList是一个一个继承于AbstractSequentialList,并实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性(addFirst(),removeLast()…),它可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。 LinkedList不是线程安全的,如果...

Java线程池ThreadPoolExecuter:execute()原理【图】

一、线程池执行任务的流程如果线程池工作线程数<corePoolSize,创建新线程执行task,并不断轮训t等待队列处理task。 如果线程池工作线程数>=corePoolSize并且等待队列未满,将task插入等待队列。 如果线程池工作流程数>=corePoolSize并且等待队列已满,且工作线程数<maximumPoolSize,创建新线程执行task。 如果线程池工作流程数>=corePoolSize并且等待队列已满,且工作线程数=maximumPoolSize,执行拒绝策略。二、ThreadPoolExecuto...

【Java书笔记】:《Redis 深度历险:核心原理和应用实践》分布式锁,延时队列,位图,HyperLogLog,布隆过滤器,漏斗限流,GeoHash,Scan,管道,事务,主从,Redis源码

Redis 深度历险:核心原理和应用实践 目 录 开篇:授人以鱼不若授人以渔—— Redis 可以用来做什么? 7 由 Redis 面试想到的 7 小册的内容范围 8 Redis 可以做什么? 8 基础:万丈高楼平地起 ——Redis 基础数据结构 11 Redis 安装 11 Redis 基础数据结构 12 string (字符串) 12 list (列表) 15 hash (字典) 17 set (集合) 19 容器型数据结构的通用规则 22 应用 1:千帆竞发 —— 分布式锁 23 分布式锁 24 超时问题 25 可重入性 2...

Java面试 第 6 章 数据库原理【图】

6.1 SQL 语言的功能有哪些 SQL 是结构化查询语言(Structured Query Language)的缩写。 基本的 SQL 语句有 select、insert、update、delete、create、drop、grant、revoke 等。其具体使用方式见表 6-1。 ======================= end点赞 收藏分享文章举报康冕峰发布了95 篇原创文章 · 获赞 20 · 访问量 6万+私信 关注

每个Java工程师,都应该掌握数据库事务(概念及原理)【图】

前言事务是数据库系统中的重要概念,了解这一概念是以正确的方式开发和数据库交互的应用程序的前提。但是很多开发者对于事务的认识相对片面和肤浅,仅仅把它等同于ACID,不了解数据库系统引入事务的真正动机,ACID对于事务意味着什么以及最重要的:数据库系统是如何保证事务的ACID特性的?因为最近在导师手下做一个微服务和分布式事务相关的课题项目,作为必要的前置准备,需要加深下对单机事务的认识并理解其实现原理。这篇文章是在我给组...