自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 第十张 早期(编译期)优化

    JVM的编译器可以分为三个编译器:前端编译器:把*.java转变为*.class的过程。如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)JIT编译器:把字节码转变为机器码的过程,如HotSpot VM的C1、C2编译器AOT编译器:静态提前编译器,直接将*.java文件编译本地机器代码的过程    本章的后续文字里,“编译期”和“编译器”都仅限于第一类编译...

2019-05-19 21:16:22 169

原创 第九章 类加载及执行子系统的案例与实战

9.1 概述    能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能。9.2 案例分析9.2.1 Tomcat:正统的类加载器架构    主流的 Java Web 服务器,如 Tomcat、Jetty、WebLogic、WebSphere 或其他笔者没有列举的服务器,都实现了自己定义的类加载器(一般都不止一个)。因为一个功能健全的 Web 服务器,要解决如下几个问题:部署...

2019-05-08 20:00:29 189

原创 第六章 围绕任务来说

第六章 围绕任务来说1、在线程中执行任务任务要有自己明确的边界,之间相互独立。任务并不依赖其他任务的状态、结果或边界,尽量别有耦合。当负荷过载应当逐渐降低效率,而不是直接失败。(1)、单线程的执行任务。碰到阻塞不仅会推迟当前请求的完成,还会彻底阻止等待中的请求被处理。阻塞时间过长用户将认为服务器不可以。服务器资源利用率相当低。但是能保证数据的完整性和原子性。并且实现任务也会简单很多。(2)...

2019-05-01 13:24:59 321

原创 第七章 取消和关闭

首先我们很少希望某个任务、线程活服务立刻停止,这样会造成数据不一致的状态。通常我们希望会清除当前正在执行的工作,然后在结束。可惜的是java中并没有一种安全的抢占方法来停止线程。但是它提供了中断(Interruption),这是一种协作机制,能够使一个线程终止另一个线程。这样提供了更好的灵活性,因为任务本身的代码比发出请求的代码更清楚如何执行清楚工作。7.1 任务取消如果外部代码能在某个操作...

2019-05-01 13:24:54 322

原创 第八章 线程池的使用之推箱子

谜题框架(A Puzzle Framework)递归算法的并行化的一种引用就是解决一些谜题,这些谜题都需要找出一系列的操作从初始状态转换到目标状态,例如类似与“搬箱子”,“四色方柱”和其他棋牌谜题。我们将谜题定义为:包含了一个初始位置,一个目标位置,以及用于判断是否是有效移动的规则集。规则集包含两个部分:计算从指定位置开始的所有合法移动,以及每次移动的结果位置。8-13给出了表示谜题的抽象类...

2019-05-01 13:24:50 200

原创 第八章 玩转线程池

8.1 在任务与执行策略之间的隐性耦合Executor框架可以将任务的提交与任务的执行策略解耦开来。虽然Executor框架为制定和修改执行策略都提供了相当大的灵活性,但并非所有的任务都能使用所有的执行策略。有些类型的任务需要明确地指定执行策略,包括:①依赖性任务如果提交给线程池的任务需要依赖其他的任务,那么就隐含地给执行策略带来了约束,此时必须小心地维持这些执行策略以避免产生活跃性问题...

2019-05-01 13:24:46 207

原创 第五章 站在巨人的肩膀上

多线程5 站在巨人的肩膀上

2019-05-01 13:24:25 531

原创 第十章 锁与活跃性的那些事

安全性和活跃性之间存在某种制衡:使用加锁机制来确保线程安全,但如果过度使用加锁,则可能导致锁顺序死锁(Lock-Ordering Deadlock)。同样,使用线程池和信号量来限制对资源的使用,但这些被限制的行为可能会导致资源死锁(Resource Deadlock)java程序无发从死锁中恢复出来。10.1 死锁如果每个人都拥有其他人需要的资源,同时又等待其他人已经拥有的资源,并且每个人...

2019-05-01 13:24:19 248

原创 第十三章 显示锁

13.1 Lock与ReenTrantLockLock是个接口其中抽象的定义了加锁操作,无条件的,可轮询的,定时的以及可中断的锁获取操作。所有加锁和解锁方法都是显式的。在Lock的实现中必须提供与内部锁相同的内存可见性语义,但在加锁语义,调度算法,顺序保证以及性能特性等方面可以有所不同// 13-1 Lock接口public interface Lock { //加锁,...

2019-05-01 13:24:15 133

原创 第十四章 构建自己的同步工具

14.1 状态依赖性的管理对于并发对象上依赖状态的方法,虽然有时候在前提条件不满足的情况下不会失败,但通常有一种更好的选择,即等待前提条件变为真。在并发程序中,依赖状态的操作可以一直阻塞直到可以继续执行,这比使它们先失败再实现起来更为方便且更不易出错。可阻塞的状态依赖操作的形式如14-1所示,这种加锁模式有些不同,因为锁是在操作的执行过程中被释放与重新获取的。构成前提条件的状态变量必须由对...

2019-05-01 13:24:10 177

原创 第十四章 了解同步器

14.4 Synchronizer(同步器)剖析ReentrantLock和Semaphore这两个接口之间存在许多共同点,这两个类都已用做一个“阀门”,即每次只允许一定数量的线程通过,并当线程到达阀门时,可以通过(在调用lock或acquire时成功返回),也可以等待(在调用lock或acquire时阻塞),还可以取消(在调用tryLock或tryAuquire时返回”假”,表示在指定的时间内...

2019-05-01 13:24:06 255

原创 第十五章 原子变量与非阻塞同步机制(CAS)

与基于锁的方案相比,非阻塞在设计和实现上都要复杂得多,但他们在可伸缩性和活跃性上却有着巨大优势。由于非阻塞算法可以使多个线程在竞争相同的数据时不会发生阻塞,因此它能在颗粒度更细的层次上进行协调,并且极大地减少开销。而且,在非阻塞算法中不存在死锁和其他活跃性问题。15.1 锁的劣势通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程持有守护变量的锁,都能采用独占方式来访问这些变量,...

2019-05-01 13:23:49 191

原创 第三章 垃圾的回收与内存的分配

3.1 概述    java的优势在哪?当然是对内存回收(GC)和内存分配了。省了程序猿很多时间。    既然java这么方便为什么我们还要去了解GC和内存分配呢?当需要排查内存溢出、内存泄漏、当垃圾回收成为系统达到更高并发量的瓶颈时。    java内存内存运行区域中,程...

2019-05-01 13:23:42 148

原创 第六章 类文件结构

6.2 无关性的基石    java虚拟机不喝包括java在内的任务语言绑定,他只与“Class文件”这种特定的二进制文件格式有关联。基于安全性java虚拟机规范要求在Class文件中使用许多强制性的语言和结构化约束。    任何一门语言只要按照Java虚拟机规范生成Class文件,那么这个文件就能被Java虚拟机执行。6.3 class类文件的结构    任何一个Class文件都对应这唯...

2019-05-01 13:23:33 206

原创 第四章 之地基

线程安全性的委托Java中对象大多是组合对象,如果组合对象都已经是线程安全的,还需要给这些组合对象增加一个线程安全层吗?答案:“视情况而定”!三种委托方式:如果组合对象A的状态是由线程安全的组合对象B的状态构成的,那么A的线程安全就可以委托给B来保证;如果组合对象A的状态是由线程安全的组合对象B、C、D….的状态构成,想让A的状态委托给这些对象,需要这些对象是彼此独立的。即不用在...

2019-05-01 13:23:03 142

原创 第八章 虚拟机字节码执行引擎

8.1 概述    执行引擎是java虚拟机最核心的组件之一。即输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。8.2 运行时栈帧结构    栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,他是虚拟机运行时数据区中虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。在编译过程中栈帧需要多大的局部变量表,多...

2019-05-01 13:22:02 131

原创 第七章 虚拟机类加载机制

7.1 概述    虚拟机把描述类的数据从Class文件中加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以在虚拟机中直接使用的java类型,这就是虚拟机的加载机制。    在java语言中,类型的加载、连接和初始化过程都在程序运行期间完成,虽然会令类加载时间稍微增加一些性能开销。但是这样能提高更多的灵活性。(Applet、jsp、OSGi都使用了这种特性)7.2类加载的时机  ...

2019-04-27 15:50:39 99

空空如也

空空如也

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

TA关注的人

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