已注销 level
获赞
452
粉丝
85
关注
40
看过 TA
2214
IP属地:北京
暂未填写个人简介
私信
关注
2023-03-14 18:17
0 点赞 评论 收藏
分享
2023-03-14 18:07
同步和异步、阻塞和非阻塞、BIO、NIO、AIO 都是与 IO 操作相关的概念,下面逐一解释:同步和异步:同步和异步是指请求发出后是否需要等待响应。同步方式发送请求时,必须等待服务器返回结果,期间不能进行其他操作,直到收到响应后才能继续执行。异步方式发送请求后,可以继续执行其他操作,不需要等待响应,当服务器响应时,再进行处理。-------------------阻塞和非阻塞:阻塞和非阻塞是指等待操作是否会阻塞当前线程。阻塞方式会一直等待操作完成,期间线程处于阻塞状态,不能执行其他操作。非阻塞方式不会一直等待操作完成,可以继续执行其他操作。BIO:BIO(Blocking IO)是一种阻塞式 IO 模型,每个请求都需要一个独立的线程进行处理,如果请求量大,会导致线程资源浪费和服务器响应延迟。NIO:NIO(Non-blocking IO)是一种非阻塞式 IO 模型,它采用事件驱动的方式,将请求放到缓冲区中等待处理,当数据就绪时通知程序进行处理,可以使用单线程处理多个请求。AIO:AIO(Asynchronous IO)是一种异步非阻塞式 IO 模型,采用回调函数的方式处理请求,当数据就绪时自动调用回调函数进行处理。简单来说,BIO 适合于连接数较小、请求较短的场景,NIO 适合于连接数多、请求处理时间短的场景,AIO 适合于连接数多、请求处理时间长的场景。综上所述,同步和异步、阻塞和非阻塞、BIO、NIO、AIO 都是 IO 操作相关的概念,它们的区别主要在于请求发出后的处理方式和操作的阻塞状态。开发者需要根据实际情况选择不同的 IO 模型和处理方式。
0 点赞 评论 收藏
分享
2023-03-13 22:37
三种创建线程(Thread)的方式:直接使用 ThreadThread + RunnableThread + Callable + FutureTask--返回值六种状态start / runsleep / yieldjoin / join(long n)interruptsetDaemon 守护线程 Java 内存模型(Java Memory Model,JMM原子性-可见性-有序性Java并发机制底层实现的三个关键要素:volatile、synchronized、原子性操作happens-before 规则--前一个操作的结果对后续操作时可见的。对于可见性,可以使用 volatile 关键字来保证,不仅如此,volatile 还能起到禁止指令重排的作用;另外, synchronized 和 final 这俩关键字也能保证可见性。对于原子性,我们可以使用锁 和 java.util.concurrent.atomic 包中的原子类来保证。(给萌新解释一下,java.util.concurrent,简称 J.U.C,就是一个包,也称为并发包。现在网上大部分博客都会直接说 JUC,对萌新不是很友好),我们可以看看 juc.atomic 中有哪些类:CAS操作锁的概念:悲观锁和乐观锁重量级锁和轻量级锁自旋锁偏向锁重入锁和不可重入锁公平锁和非公平锁共享锁和排他锁AbstractQueuedSynchronizer 类(也就是大名鼎鼎的 AQS,译为队列同步器,简称同步器)。JUC 其实可以分为五大类:Lock 框架(locks 包)原子类(atomic 包)并发集合线程池工具类然后常用的工具类还是有必要学习下:CountDownLatchCyclicBarrierSemaphoreExchangerThreadLocalJava运行时的数据区域--堆(对象实例)--方法区(常量-静态变量)(共有的)-私有-虚拟机栈(栈帧)--本地方法栈(Native方法)--程序计数器(字节码指令地址)
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务