关于java NIO中 Chennal的阻塞在regist方法上的解决办法
自己遇到了,研究了一下网上的帖子和oracle的文档。了解清楚后,发现其实解决方法很简单。
先说下阻塞的原因:Channel的regist方法和Selector的select方法是需要获取相同的监视器。oracle文档关于Selector的select方法有这么一句话:
This method performs a blocking selection operation. It returns only after at least one channel is selected, this selector's wakeup
method is invoked, or the current thread is interrupted, whichever comes first.
意思是“该方法执行阻塞选择操作。 只有在选择了至少一个通道,调用此选择器的唤醒方法,或者当前线程被中断(以先到者为准)时,它才会返回。”。因此,当没有任何通道时,除非唤醒或者被中断,否则不会返回,即:不会释放选择器。因此Channel的regist方法就被阻塞住了。
知道了原因,解决起来很简单,用以下3种之一:
1、唤醒:调用Selector的wakeup方法
2、中断:interrupt Selector所在线程
3、在至少调用了一次Channel的regist之后,再调用Selector的select。当然很显然,如果已经注册了一个通道,就不需要再保证这个顺序了。
关于java NIO中 Chennal的阻塞在regist方法上的解决办法相关推荐
- java在方法中用来抛出异常关键字的是,在Java语言中以下哪个关键字用于在方法上声明抛出异常()...
在Java语言中以下哪个关键字用于在方法上声明抛出异常() 更多相关问题 [判断题] 现金到账户汇款和账户到账户汇款简称为入账汇款. [单选] 客户办理一笔134.45元按址汇款,附言5个汉字,共应收 ...
- java enumerator_java 中遍历取值异常(Hashtable Enumerator)解决办法
java 中遍历取值异常(Hashtable Enumerator)解决办法 用迭代器取值时抛出的异常:java.util.NoSuchElementException: Hashtable Enum ...
- 浏览器怎样更新java,Eclipse中js文件修改后浏览器不能及时更新的解决办法
现在就分别把IE,firefox,chrome中解决办法贴出来供大家参考: 1.firefox(火狐浏览器)解决问题 第一步,在浏览器中敲入:about:config ,然后回车 第二步,在显示出的内 ...
- Java NIO中Charset类源码
Java NIO中Charset类源码 public abstract class Charsetimplements Comparable<Charset> {private stati ...
- java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法
在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...
- java用redis缓存的步骤_详解在Java程序中运用Redis缓存对象的方法|chu
这段时间一直有人问如何在Redis中缓存Java中的List 集合数据,其实很简单,常用的方式有两种: 1. 利用序列化,把对象序列化成二进制格式,Redis 提供了 相关API方法存储二进制,取数据 ...
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
Java中OutOfMemoryError(内存溢出)的三种情况及解决办法 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各 ...
- Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法
public static void main(String[] args) {} 或者 public static void main(String args[]) {} main方法是我们学习Ja ...
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
原文地址:http://www.cnblogs.com/taven/p/3351841.html JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spr ...
最新文章
- 高并发整体可用性:一文详解降级、限流和熔断
- 电商的本质是“商”还是“用户”?
- 巩膜(眼白)灰色原因
- TIMEOUT will also publish one order event
- LeetCode--single-number复杂度
- 2020年度国家自然科学基金医学领域结果公布(9月27后可查)
- Python稳基修炼之计算机等级考试易错细节题4(含答案)
- angularjs之UI Grid 的刷新 本地数据源及HTTP数据源
- const 并不能加快 C 代码的运行速度?
- PTA是什么?BT-WIFI共存 转帖
- 在Ubuntu上使用apt-get安装MySQL+安全优化
- Android 如何直播RTMP流
- oracle的五种元素,五种元素
- python谁的教程好贴吧_python深挖65万人的明星贴吧,探究上万个帖子的秘密
- Typo: In word ‘worklist‘
- WinRAR破解注册方法
- ckplayer ajax,谁能帮我做一个脚本啊?能让这个网页视频播放可以拉动进度条 可以快进...
- iOS 手机记录登录账号密码列表
- 『Linux』CentOS 7下一些有趣的配置
- C补习--------->第六天,二级指针、指针和数组的关系、选择排序
热门文章
- 空间滤波(平滑滤波)
- Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同
- QT移植:解决win下音频可以播放而linux下音频不能播放的问题(GStreamer; Unable to pause - “file:music/1.mp3“)
- 福利:总结10个Python赚钱的接单平台,兼职月入5000+
- 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper...
- c语言如何寻找排序最少次数,C语言快速排序比较次数问题
- Python列表切片操作
- 余承东再会张近东 战略合作升级点燃818第一把火
- The 15th Chinese Northeast Collegiate Programming Contest - K.City
- 计算机和运筹学杂志,请问运筹学和管理学的顶级期刊有哪些?能否介绍一些这些期刊的级别和投稿经验?...