多线程
多线程
永恒的回忆l
喜欢欣赏技术,欢迎交流
展开
-
ReentrantLock 与synchronized
1. ReentrantLock 通过方法 lock()与 unlock()来进行加锁与解锁操作,与 synchronized 会被 JVM 自 动解锁机制不同,ReentrantLock 加锁后需要手动进行解锁。为了避免程序出现异常而无法正常解 锁的情况,使用 ReentrantLock 必须在 finally 控制块中进行解锁操作。 2. ReentrantLock 相比 synchronized 的优势是可中断、公平锁、多个锁。这种情况下需要使用 ReentrantLock。 ReentrantL原创 2021-07-25 09:47:39 · 94 阅读 · 0 评论 -
线程池原理
提交一个任务到线程池中,线程池的处理流程如下: 1、判断线程池里的核心线程是否都在执行任务,如果不是(核心线程空闲或者还有核心线程没有被创 建)则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则进入下个流程。 2、线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如 果工作队列满了,则进入下个流程。 3、判断线程池里的线程是否都处于工作状态,如果没有,则创建一个新的工作线程来执行任务。如果已 经满了,则交给饱和策略来处理这个任务。 1、ThreadP.原创 2021-07-25 09:31:36 · 86 阅读 · 0 评论 -
BIO,NIO,AIO 有什么区别?
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端线程会等待请求结束后才继续执行。 二、NIO NIO本身是基于事件驱动思想来...原创 2021-07-11 15:24:37 · 140 阅读 · 0 评论