架构
小白白007
这个作者很懒,什么都没留下…
展开
-
《图解java多线程设计模式》中的 ActiveObject 模式
ActivationbQueuepublic class ActivationbQueue { private static final int max_method_request = 100; private final MethodRequest[] requestsQueue; private int tail; private int head; private int count; public ActivationbQueue(){原创 2022-01-14 18:27:16 · 258 阅读 · 0 评论 -
《图解java多线程设计模式》中的 Balking 模式
ChangerThread:修改并保存数据内容的类public class ChangerThread extends Thread{ private final Data data; private final Random random = new Random(); public ChangerThread(String name,Data data){ super(name); this.data = data; } p.原创 2022-01-14 18:23:02 · 169 阅读 · 0 评论 -
《图解java多线程设计模式》中的 Future 模式
Datapublic interface Data { public abstract String getContent();}FutureDatapublic class FutureData { private RealData realData = null; private boolean ready = false; public synchronized void setRealData(RealData realData){ if原创 2022-01-14 18:20:46 · 89 阅读 · 0 评论 -
《图解java多线程设计模式》中的 GuardedSuspension 模式
ClientThread:表示发送请求的线程public class ClientThread extends Thread{ private final Random random; private final RequestQueue requestQueue; public ClientThread(RequestQueue requestQueue,String name,long seed){ super(name); this.rando原创 2022-01-14 18:18:18 · 84 阅读 · 0 评论 -
《图解java多线程设计模式》 中的 ProducerConsumer 模式
main/** *生产者消费者模式 * 生产者安全的将数据交给消费者,但是当消费者和生产者以不同的线程运行时,两者之间的处理速度差异便会引起问题 * 例如:消费者想要获取数据,可数据还没生成,或者生产者想要交付数据,而消费者的状态嗨无法接受数据等 * producer-consumer模式在生产者和消费者之间加入了一个“桥梁角色”,该角色用于消除线程间处理速度的差异 * * Channel通道 * 为了确保安全性,channel角色会对produce角色和consumer角色的访原创 2022-01-14 18:15:22 · 823 阅读 · 0 评论 -
《图解java多线程设计模式》中的 ReadWriteLock 模式
Data:public class Data { private final char[] buffer; private final ReadWriteLock lock = new ReadWriteLock(); public Data(int size){ this.buffer = new char[size]; Arrays.fill(buffer, '*'); } public char[] read() throw原创 2022-01-12 18:16:17 · 60 阅读 · 0 评论 -
《图解java多线程设计模式》中的 ThreadPerMessage 模式
Helper: 提供字符显示功能的被动类public class Helper { public void handle(int count,char c){ System.out.println(" handle (" + count +"," +c + ") start"); for (int i = 0;i < count;i++){ slowly(); System.out.print(c);原创 2022-01-12 18:07:06 · 119 阅读 · 0 评论 -
《图解java多线程设计模式》中的 ThreadSpecificStrorage 模式
ClientThread:表示调用log的线程的类public class ClientThread extends Thread { public ClientThread(String name){ super(name); } public void run(){ System.out.println(getName() + " start "); for (int i = 0; i < 10; i++) {原创 2022-01-12 18:03:50 · 69 阅读 · 0 评论 -
《图解java多线程设计模式》中的 TwoPhaseTermination 模式
CountupThreadpublic class CountupThread extends Thread{ private long counter = 0; private volatile boolean shutdownRequested = false; public void shutdownRequest(){ shutdownRequested = true; interrupt(); } public bool原创 2022-01-12 18:00:08 · 118 阅读 · 0 评论 -
《图解java多线程设计模式》中的 WorkerThread 模式
Channel:接收工作请求并将工作请求交给工人线程的类public class Channel { private static final int MAX_REQUEST = 100; private final Request[] requestsQueue; private int tail; private int head; private int count; private final WorkerThread[] threadPool;原创 2022-01-12 17:57:04 · 231 阅读 · 0 评论 -
多线程基础知识--关于锁的面试题
二. 锁2.1 乐观锁和悲观锁2.1.1乐观锁使用细节特点:读多写少。遇到并发写的可能性低使用:更新的时候会判断在此期间别人有没有更新这个数据,采取在写时加上版本号,然后加锁,如果失败,则要重复读-比较-写的操作。乐观锁基本跟上都是通过CAS操作实现的,CAS是一种更新的原子操作2.1.2 悲观锁使用细节特点:写多,默认遇到的并发可能性高使用:每次独写数据都会上锁,这样别人香独写这个数据就会block直到拿到锁,java中的悲观锁就是synchronized,AQS框架下的锁则是先尝试CAS乐原创 2021-03-29 18:07:20 · 567 阅读 · 0 评论 -
设计模式--单例模式的简单学习总结
设计模式单例模式:确保一个类最多只有一个实例,并提供一个全局访问点懒加载:为了避免内存的浪费,我们可以采用懒加载,即用到该单例对象的时候再创建。public class Singleton { private static Singleton instance=null; private Singleton(){}; public static Singleton getInstance() { if(instance==null) {原创 2021-04-13 20:30:33 · 130 阅读 · 1 评论 -
spring入门学习-看这篇就够了
spring学习:1.什么是spring?Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。2.Spring 的优势低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)声明式事务管理(基于切面和惯例)方便集成其他框架(如MyBatis、Hibernate)降低 Java 开发难度原创 2020-12-03 17:19:00 · 387 阅读 · 1 评论 -
图解Java多线程设计模式(笔记)(序章)第一章-- Java多线程
第一章:java线程java程序的终止是指除守护线程意外的线程全部终止。守护线程是执行后台作业的线程,我们可以通过setDaemon方法把线程设置为守护线程Thread类本身还实现了Runnable接口,并且持有run方法,但Thread类的run方法主体是空的,不执行任何操作,Thread类的run方法通常都由子类的run方法重写java.util.concurrentt.ThreadFactory包中包含一个将线程创建抽象化的ThradFactory接口,利用该接口,我们可以将以Runnable作原创 2021-04-03 12:07:56 · 236 阅读 · 0 评论 -
读书笔记--一句话了解常用的23种设计模式
简单一段话带你简单了解设计模式从迭代器开始,我们将类中数据结构的遍历和类的功能实现分离出来,本质上使用了工厂模式;其次我们学习了适配器模式,它将不同的接口进行适配,从而便于版本的兼容性以及其他功能;然后我们学习了模板方法,使用模板面向抽象编程,便于新的子类的实现和管理;之后学习了工厂模式,其实借用了模板模式来创建产品,是一种非常重要用处很广的一种方法;然后我们学习了单例模式,有懒汉式、饿汉式等,生成关于某个类全局唯一的对象,注意多线程的影响;之后是原型模式,用来复制复杂的对象,使用了clone方原创 2021-05-12 22:44:33 · 76 阅读 · 0 评论 -
jvm虚拟机的学习--垃圾回收机制
垃圾收集是java语言核心技术之一,一切都交给jvm来处理。理解即可 判断是否为垃圾有两种算法,第一种是引用计数法,第二种是可达性分析算法。 先是引用计数法,他是比较好理解的一种算法,给引用的对象添加一个程序计数器,引用一次就加一,引用失效就减一,当计数器为0时,就可以当作垃圾回收了。有优点也有缺点,这种机制执行效率高,程序影响小。缺点是无法检测出循环引用。 public class ReferenceCountingGC { public Object inst原创 2020-10-11 11:58:45 · 154 阅读 · 0 评论