在看并发编程的第一章的时候举出了一个死锁了的例子,感觉特别棒,于是就联想到了阻塞,我们知道在JAVA环境中,线程Thread有如下五个状态:(当然有人要说是七个状态,这个以后有机会再说) 1,新建状态 2,就绪状态 3,运行状态 4,阻塞状态 5,死亡状态所以说在JAVA程序运行中阻塞是一种常见的运行状态,那么首先阻塞是什么?在我理解,阻塞就是由于等待资源而引起的程序暂停,只不过有的暂停能缓回来程            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-10 15:29:03
                            
                                63阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、公平锁与非公平锁线程所谓的公平,就是指的是线程是否按照锁的申请顺序来获取锁,如果是遵守顺序来获取,这就是个公平锁,反之为非公平锁。  非公平锁的优点在于吞吐量大,但是由于其不是遵循申请锁的顺序来获取锁,就会出现最开始申请的锁一直没有获取到,导致出现饥饿现象。  java中的使用:  synchronized:非公平锁  ReentrantLock:按照其构造方法来指定该锁是否是公平锁,默认是非            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-18 15:47:22
                            
                                41阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 什么是阻塞和非阻塞Java
在Java编程中,"阻塞"与"非阻塞"是处理输入输出(I/O)操作时非常重要的两个概念。理解这两种概念将帮助开发者更好地优化应用程序的性能并做出更合适的选择。
## 1. 阻塞I/O(Blocking I/O)
阻塞I/O是一种传统的I/O操作方式。在执行I/O操作时,线程会被挂起,直至操作完成。例如,当你从一个文件中读取数据时,调用的读取方法将会阻塞当前线程            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-02 04:48:41
                            
                                67阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Queue是什么队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。队列都是线程安全的,内部已经实现安全措施,不用我们担心 Queue中的方法Queue中的方法不难理解,6个,每2对是一个也就是总共3对。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-22 23:31:50
                            
                                59阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录1.NIO 的非阻塞式网络通信1.2 阻塞模式传输1.3 非阻塞模式传输2.选择器2.1 选择器(Selector)的应用2.2 SelectionKey2.3 选择器常用方法3 管道 1.NIO 的非阻塞式网络通信传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-03 06:18:39
                            
                                21阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近去面试,面试让我描述JAVA IO的三种方式:阻塞,非阻塞,异步。当时我有点儿懵了,异步怎么和阻塞,非阻塞并列了。阻塞和非阻塞是一组相对的概念,异步是和同步相对的概念。同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用。异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不用等待得到结果。实际处理这个调用的部件在完成            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-12 16:12:27
                            
                                58阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录什么是NIOChannelBufferSelector 什么是NIOjava.nio全称java non-blocking IO(实际上是 new io),是指JDK 1.4 及以上版本里提供的新api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。原有的 IO 是面向流的(Stream)、阻塞的,NIO 则是面            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-20 22:51:32
                            
                                43阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。以银行取款为例:同步:自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);异步va将I...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-02-20 10:31:35
                            
                                93阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            五种IO模型、JAVA中的三种(B、N、A)IO1. 概念介绍1.1 什么是IO1.2 同步与异步,阻塞与非阻塞的区别1.2.1 同步1.2.2 异步1.2.3 阻塞1.2.4 非阻塞1.3 阻塞和非阻塞对CPU的影响1.4 形象比喻2. Java中的三种IO方式2.1 BIO2.2 NIO2.3 AIOBIO和NIO、AIO的区别 1. 概念介绍1.1 什么是IOJava中I/O是以流为基础进            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-12 07:28:06
                            
                                19阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            同步和异步、阻塞和非阻塞同步和异步关注的是消息通信机制.同步是指: 发送方发出数据后, 等待接收方发回响应后才发下一个数据包的通讯方式. 就是在发出一个调用时, 在没有得到结果之前, 该调用就不返回, 但是一旦调用返回, 就得到返回值了. 也就是由"调用者"主动等待这个"调用"的结果.异步是指: 发送方发出数据后, 不等待接收方发回响应, 接着发送下个数据包的通讯方式. 当一个异步过程调用发出后,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-01 12:59:02
                            
                                30阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、什么是阻塞和非阻塞?什么是同步和异步?1.1、阻塞与非阻塞阻塞与非阻塞是描述进程在访问某个资源时,数据是否准备就绪的的            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-06-27 10:25:39
                            
                                425阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一,Java中三种实现生产者消费者1,使用wait()/notify()的方式2,使用J.U.C下Condition的await()/signal()的方式实现3,使用阻塞队列实现注:这篇博文主要将使用阻塞队列实现,至于前面的两种可以看看我的另外一篇博客二,什么是阻塞队列,阻塞队列的特性1,一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。2,Java针对阻塞队列的操作方式有不            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-15 14:54:52
                            
                                64阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、概述位于java.util.concurrent下,声明:public interface BlockingQueue<E> extends Queue<E> 支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。BlockingQueue 方法以四种形式出现,对于不能立即满足但可能在将来某一时刻可            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-08 20:13:11
                            
                                54阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞 Blocked阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况大概三种:1、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。(wait会释放持有的锁) 2、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。 3、其他阻塞:运行的线程执行sleep()或joi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-29 15:04:07
                            
                                115阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞IO:socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。 非阻塞IO:非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。 两者区别: 所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-07-09 17:36:00
                            
                                318阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1.同步阻塞IO(JAVA BIO)    在JDK1.4之前,建立网络连接采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Sokcet来对服务端进行通讯,默认情况下服务端需要对每个请求建立一堆县城等待请求,而客户端发送请求后,先咨询服务端是否有线程对应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会等待请求结束后才继续执行。2.异步            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-15 23:03:42
                            
                                126阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞IO的概念 阻塞IO(Blocking IO)是一种IO操作模式。在这种模式下,当一个IO操作(如读、写)执行时,如果不能立即说,阻塞IO会使调用线程            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-20 15:14:20
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。1、LockSupport原理LockSupport是只有静态方法且构造函数私有,对外给线程提供各种版本的park()和unpark()方法实现阻塞线程和解除线程阻塞。LockSupport和每个使用它的线程都与一            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-31 06:55:05
                            
                                30阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            为什么 java wait/notify 必须与 synchronized 一起使用这个问题就是书本上没怎么讲解,就是告诉我们这样处理,但没有解释为什么这么处理?我也是基于这样的困惑去了解原因。synchronized是什么Java中提供了两种实现同步的基础语义:synchronized方法和synchronized块, 看个demo:public class SyncTest {
   \\            
                
         
            
            
            
            1.类和对象的初步认识 类:相当于一个房子图纸(抽象); 对象:相当于一个房子(实体)。类就是一类对象的统称。对象就是这一类具体化的一个实例。 JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类和类的实例化一个类,可以产生无数的对象。 声明一个类就是创建一个新的数据类型,而类在 Java 中属于引用类型, Java 使用关键字 class 来声明类。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-22 10:34:46
                            
                                49阅读