摘要: 线程数量 上下文切换 1.在单处理器时期,操作系统就能处理多线程并发任务,处理器给每个线程分配CPU时间片,线程在CPU时间片内执行任务 CPU时间片是CPU分配给每个线程执行的时间段,一般为几十毫秒 2.时间片决定了一个线程可以连续占用处理器运行的时长 当一个线程的时间片用完,或者因自身原因被迫暂 阅读全文
posted @ 2019-09-17 15:31 Java架构Monster 阅读(6423) 评论(0) 推荐(1) 编辑
摘要: synchronized / Lock / CAS synchronized和Lock实现的同步锁机制,都属于悲观锁,而CAS属于乐观锁 悲观锁在高并发的场景下,激烈的锁竞争会造成线程阻塞,而大量阻塞线程会导致系统的上下文切换,增加系统的性能开销 乐观锁 乐观锁:在操作共享资源时,总是抱着乐观的态度 阅读全文
posted @ 2019-09-17 15:29 Java架构Monster 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 高效并发一 Java内存模型与Java线程 本篇文章,首先了解虚拟机Java 内存模型的结构及操作,然后讲解原子性,可见性,有序性在 Java 内存模型中的体现,最后介绍先行发生原则的规则和使用. 在多数情况下让计算机同时去做几件事情,不仅是因为计算机的运算能力强大,还有一个重要的原因是计算机的运算 阅读全文
posted @ 2019-09-16 16:27 Java架构Monster 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 Class文件中的常量池 在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着 阅读全文
posted @ 2019-09-16 16:25 Java架构Monster 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 锁优化 适应性自旋(Adaptive Spinning) 线程阻塞的时候,让等待的线程不放弃cpu执行时间,而是执行一个自旋(一般是空循环),这叫做自旋锁。 自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就非常好,反之,如果锁被占用的时间 阅读全文
posted @ 2019-09-16 16:21 Java架构Monster 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 类的加载时机 现在我们例子中生成的两个.class文件都会直接被加载到JVM中吗?? 虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(class文件加载到JVM中): 创建类的实例(new 的方式)。访问某个类或接口的静态变量,或者对该静态变量赋值,调用类的静态方法 反射的方式 阅读全文
posted @ 2019-09-16 16:18 Java架构Monster 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 一.Java创建线程的三种方式 Java中创建线程主要有三种方式: 1.继承Thread类 2.实现Runnable接口 3.使用Callable和Future 1.继承Thead类创建线程 (1)继承Thread类并重写run方法 (2)创建线程对象 (3)调用该线程对象的start()方法来启动 阅读全文
posted @ 2019-09-12 21:13 Java架构Monster 阅读(337) 评论(0) 推荐(0) 编辑
摘要: Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理。可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示。 用户创建的所有线程都属于指定线程组,如果没有显式指定属于哪个 阅读全文
posted @ 2019-09-12 15:57 Java架构Monster 阅读(2525) 评论(0) 推荐(0) 编辑
摘要: 1 说到线程,首先来说下进程,以下是进程的定义: 进程是操作系统结构的基础,是程序的一次执行,是一个程序及其数据结构在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 简单来说一个任务管理器中列表的一个exe文件就可以理解成进程,如QQ.e 阅读全文
posted @ 2019-09-12 14:23 Java架构Monster 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实 阅读全文
posted @ 2019-09-11 21:22 Java架构Monster 阅读(1161) 评论(0) 推荐(0) 编辑