摘要:
线程池 目的 降低资源消耗 通过重复利用已创建的线程降低线程的创建和销毁的消耗 提高利用率 当任务到达时,可以省去线程的创建时间,直接去执行。 方便管理 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以统一分配,调优和监控。 线程池的四种创建方式 1. ne 阅读全文
摘要:
TCP四次挥手 假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",可是假设你还有数据没有发送完毕,则不必急着关闭Socket,能够继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,可是我还 阅读全文
摘要:
http1.0、http1.x、http 2和https梳理 Http1.x 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞 http1.0 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户 阅读全文
摘要:
重排序 重排序只会在多线程场景下遇到,在单线程场景是不会遇到的。 cpu会对代码实现执行做优化重排序,不会对有依赖关系性的做重排序。 编译器优化的重排序。编译器在不改变单线程程序语义放入前提下,可以重新安排语句的执行顺序。 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果 阅读全文
摘要:
java内存模型 内存模型和内存结构区别 它们是两个概念。 内存模型是和jvm多线程相关的。 内存结构是指的jvm内存结构。 内存模型的作用 内存模型简称JMM JMM是决定一个线程对共享变量的写入时,能够对另一个线程是否可见。抽象概念。 主内存:共享内存变量 本地内存:共享变量的副本。 共享内存模 阅读全文
摘要:
volatile 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。 在Java中为了加快程序的运行效率,对一些变量的操作通常是在该线程的寄存器或是CPU缓存上进行的,之后才会同步到主存中,而加了vo 阅读全文
摘要:
ThreadLocal ThreadLocal提供了线程独有的局部变量,可以在整个线程存活的过程中随时取用,极大地方便了一些逻辑的实现. 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线 阅读全文