-
轻松学习多线程 10-Read Write Lock 读写锁模式
Read Write Lock 模式
Read Write Lock 模式就是将内容的读取和写入分开进行处理。
因为数据的互斥需要牺牲性能,读的时候可以互不影响,但是读的时候禁止写。
实际案例
类信息概览:
类名
说明
Main.java
方法的总入口
...
2019-01-19 03:21:15 |
Thread
-
轻松学习多线程 09-Producer Consumer 生产者消费者模式
Producer Consumer 模式
Producer Consumer 模式是指一个负责生产,一个负责消费。
核心是生产者安全地将数据交给消费者。
实际案例
类信息概览:
类名
说明
Main.java
方法的总入口
ConsumerCakeThr...
2019-01-19 03:21:15 |
Thread
-
轻松学习多线程 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