1. Java并发 - 线程安全的设计方式

    本文从面向对象设计的角度出发介绍几种保障线程安全的常用技术。这些技术的使用通常可以使得在不必 借助锁的情况下保障线程安全,从而既避免锁可能导致的问题以及开销,又有利于提高系统的并发性并 简化代码。另外,本文还介绍了常用的线程安全的集合对象。

    2021/08/23 concurrent

  2. Java并发 - 线程停止

    线程停止:看似简单,实则不然。

    2021/08/23 concurrent

  3. Java并发 - 线程中断

    线程间协作还有一种常见的形式是,一个线程请求另外一个线程停止其正在执行的操作。比如,对于有些 比较耗时的任务,我们往往会采用专门的工作者线程来负责其执行,如果中途要取消(比如用户不想等了) 这类任务的执行,那么我们就需要借助Java 线程中断机制。

    2021/08/23 concurrent

  4. Java并发 - wait和notify

    在多线程编程中,一个线程因其执行目标动作所需的保护条件未满足而被暂停的过程就被称为等待(Wait)。 一个线程更新了系统的状态,使得其他线程所需的保护条件得以满足的时候唤醒那些被暂停的线程的过程就被称为通知(Notify)。 在Java平台中,Object.wait()/Object.wait(long)以 及Object.notify()/Object.notifyAll() 可用于实现等待和通知:Object.wait()的作用是使其执行线程被暂停(其生命周期状态变更为WAITING), 该方法可用来实现等待;Object.notify()的作用是唤醒一个被暂停的线程,调用该方法可实现通知。 相应地,Object.wait()的执行线程就被称为等待线程;Object.notify()的执行线程就被称为通知线程。 由于Object类是Java中任何对象的父类,因此使用Java中的任何对象都能够实现等待与通知。

    2021/08/22 concurrent

  5. Java基础 - static 关键字

    static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。

    2021/08/22 Java

  6. JVM - javap指令

    javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区 (汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。

    2021/08/22 JVM

  7. Java并发 - CAS与原子变量

    在 Java 并发领域,我们解决并发安全问题最粗暴的方式就是使用 synchronized 关键字了,但它是 一种独占形式的锁,属于悲观锁机制,性能会大打折扣。volatile 貌似也是一个不错的选择,但 volatile 只能保持变量的可见性,并不保证变量的原子性操作。

    2021/08/06 concurrent

  8. 设计模式之 - 单例模式

    单例模式是软件开发过程中经常用到的一种设计模式,但如果优雅的实现单例模式,并不是一个简单的问题。

    2021/08/06 设计模式

  9. JVM - 对象的内存布局

    在 HotSpot 虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、 实例数据(Instance Data)和对齐填充(Padding)。

    2021/07/29 JVM

  10. JVM目录汇总

    JVM知识梳理 内存区域 Class对象 JVM - 类加载器 引用类型 垃圾回收

    2021/07/29 JVM