![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程设计模式
你佳哥
勿于浮沙筑高台
展开
-
java多线程设计模式(七)工作线程模式
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景3 线程池大小权衡3.1 CPU密集型3.2 I/O 密集型 1 场景 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。 3 线程池大小权衡 过小,不能充分利用系统资源,容易导致饥饿; 过大,更多的上下文切换,占用更多的内存; 3.1 CPU密集型 大量的任务都是计算型任务,一般采用cpu核心数目+1个线程数,+1是保证当某一线程由于页缺失故障或者其他原因导致暂停时,额外的线程能原创 2020-11-24 09:57:34 · 275 阅读 · 1 评论 -
java多线程设计模式(六)Balking(犹豫)模式
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景2 代码2.1 线程类2.2 测试主类3 总结 1 场景 一个线程发现另一个线程或者本线程已经做了某件事,那么本线程就无需再做了。其实思想和单例模式一致,只是场景不一致而已。 2 代码 2.1 线程类 //线程类 class myThread extends Thread { static volatile boolean done = false;//判断是否执行过了,要最新的Done所以要vola原创 2020-11-19 11:33:02 · 145 阅读 · 0 评论 -
java多线程设计模式(五)同步模式之交替输出
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景2 例子2.1 大象类2.2 测试主类3 总结 1 场景 一系列的工作需要交替执行,但是每个线程负责的工作又是可并行的。 2 例子 把大象塞进冰箱的场景,但是有很多大象都要塞进冰箱。 2.1 大象类 //把大象装进冰箱 class Elephant { private String flag;//存放对象当前的状态变量 Elephant(String flag0) { thi原创 2020-11-18 22:00:18 · 227 阅读 · 1 评论 -
java多线程设计模式(四)同步模式之顺序控制
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景2 代码3 总结 1 场景 适用于两个线程有强的顺序逻辑,虽然可以并行,但是必须要等到某一个完成,另个才可以完成。 2 代码 要求t2先输出,然后t1才能输出。 public class Main { static ReentrantLock lock = new ReentrantLock(); static Condition condition = lock.newCondition()原创 2020-11-18 21:27:55 · 225 阅读 · 1 评论 -
java多线程设计模式(三)生产者/消费者模式
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景2 代码2.1 消息2.2 消息队列3.3 测试主类3 总结 1 场景 生产者负责生产对象,消费者负责拿走对象,中间维护一个消息队列。 2 代码 2.1 消息 //消息类,只能读 final class Message { private int id;//消息的id private Object object;//消息的值 Message(int id, Object objec原创 2020-11-18 16:45:31 · 122 阅读 · 0 评论 -
java多线程设计模式(二)保护性暂停
基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程 目录1 场景2 要点3 代码结构3.1 GuardedObejet类3.2 测试主类4 扩展1:添加超时等待5 扩展2:多个产生多个接受6 总结 1 场景 一个线程等待另一个线程的执行结果。 t1正常执行过程中,需要用到response值;t2负责给response赋值; 2 要点 传递仅仅是一个结果(一个数据类型、一个对象、一个文件等); 如果有多个,就需要消息队列(生产者/消费者); JDK中,join的实现、F原创 2020-11-18 15:53:55 · 203 阅读 · 1 评论 -
java多线程设计模式(一)两阶段终止模式
目录1 场景2 流程图3 核心代码 1 场景 在T1线程中如何“优雅”终止线程T2。 2 流程图 3 核心代码 Thread thread = new Thread() { @Override public void run() { //持续运行 while (true) { //被打断 Thread current = Thread.currentThread(); if (curre原创 2020-11-16 21:32:53 · 199 阅读 · 0 评论