个人简介

Echo Blog


江湖无名 安心练剑
  • 轻松学习多线程 07-Guarded Suspension 模式 等待唤醒
    Guarded Suspension 模式 Guarded Suspension 模式通过让线程等待保证线程的安全性。 实际案例 类信息概览: 类名 说明 Main.java 方法的总入口 ClientThread.java 发送请求的类 ...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 06-Immutable 不可变模式
    Immutable 想破坏也破坏不了。 Immutable 可以确保实例状态不发生改变,访问这类实例时不需要执行耗时的互斥处理,可以提升性能。 实际案例 定义 Person.java 不可变对象类 /** * 不可变类 * * @author bbhou * @version 1.0.0 * @since 1.0.0 */ public final clas...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 05-Single Threaded Execution 模式
    # Single Threaded Execution 这座桥,一次只能过一个人。 情景引入 使用程序模拟三个人频繁通过一个只允许通过一个人的门。 每次有人通过,人数统计便会增加。 每次通过,都会校验通过者的信息。 普通方式 定义 Gate.java 定义接口。 /** * 接口 * @author bbhou */ public interface Gate ...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 04-线程间的协作及状态迁移 wait notify
    状态迁移图 常言道,一图胜千言。 线程协作 我们前面讲到使用 synchronized 进行线程间的互斥。 但,如果我们需要更加精确地控制。比如: 如果空间为空则写入,如果非空则一直等待。 空间已经为空时,“通知”其他等待的线程。 为此,JDK 为我们准备了 wait()、notify()、notifyAll() 等方法,用于线程的...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 03-多线程的同步与锁
    问题的出现 上代码 public class Num { private int num; public int getNum() { return num; } public int add(int num) { this.num += num; return this.num; } } 测...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 02-thread 源码分析
    前言 最近想写一个多线程的程序,发现对于 java 的多线程理解还是不够深入。 所以看下源码,学习下基础知识。 接口 作用 接口作为绝对的抽象,非常便于后期拓展。 核心接口 Runnable.java public interface Runnable { /** * When an object implementing interface <...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 02-多线程的基本机制
    定义线程 实现线程的方式,上一章中已经提到。下面使用实现Runnable的方式 /** * Created by 侯彬彬 on 2016/4/14. */ public class NumCounter implements Runnable { private static int count = 0; private final int id = coun...
    2019-01-19 03:21:15 | Thread
  • 轻松学习多线程 01-多线程是什么
    线程的概念 线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。 当 Java 虚拟机启动时,通常都会...
    2019-01-19 03:21:15 | Thread