摘要: Java 中 3 种常见 IO 模型 BIO (Blocking I/O) BIO 属于同步阻塞 IO 模型 。 同步阻塞 IO 模型中,应用程序发起 read 调用后,会一直阻塞,直到在内核把数据拷贝到用户空间。 在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统 阅读全文
posted @ 2021-02-03 17:52 天宇轩-王 阅读(302) 评论(8) 推荐(0)
摘要: 隐藏的问题 FixedThreadPool 首先我们来看第一种线程池 FixedThreadPool, 它是线程数量固定的线程池,如源码所示,newFixedThreadPool 内部实际还是调用了 ThreadPoolExecutor 构造函数。 public static ExecutorSer 阅读全文
posted @ 2021-02-03 15:55 天宇轩-王 阅读(516) 评论(0) 推荐(0)
摘要: 合适的线程数量是多少?CPU 核心数和线程数的关系? CPU 密集型任务 首先,我们来看 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。对于这样的任务最佳的线程数为 CPU 核心数的 1~2 倍,如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们 阅读全文
posted @ 2021-02-03 15:32 天宇轩-王 阅读(672) 评论(0) 推荐(1)
摘要: 线程池实现“线程复用”的原理? 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务,但无论是固定数量或可变数量的线程,其线程数量都远远小于任务数量,面对这种情况线程池可以通过线程复用让同一个线程去执行不同的任务,那么线程复用背后的原理是什么呢? 线程池可以把线程和任务进行解耦,线程 阅读全文
posted @ 2021-02-03 15:14 天宇轩-王 阅读(703) 评论(0) 推荐(0)
摘要: 代理模式 概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生 阅读全文
posted @ 2021-02-03 13:38 天宇轩-王 阅读(115) 评论(0) 推荐(0)