轻松学习多线程 08-balking 不需要就算了
Balking 模式
Balking 模式是指如果不适合执行这个操作,或者没必要执行这个操作,就停止操作,直接返回。
实际案例
类信息概览:
类名
说明
Main.java
方法的总入口
SaveThread.java
保存线程
...
2019-01-19 03:21:15 |
Thread
轻松学习多线程 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