自己遇到了,研究了一下网上的帖子和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方法上的解决办法相关推荐

  1. java在方法中用来抛出异常关键字的是,在Java语言中以下哪个关键字用于在方法上声明抛出异常()...

    在Java语言中以下哪个关键字用于在方法上声明抛出异常() 更多相关问题 [判断题] 现金到账户汇款和账户到账户汇款简称为入账汇款. [单选] 客户办理一笔134.45元按址汇款,附言5个汉字,共应收 ...

  2. java enumerator_java 中遍历取值异常(Hashtable Enumerator)解决办法

    java 中遍历取值异常(Hashtable Enumerator)解决办法 用迭代器取值时抛出的异常:java.util.NoSuchElementException: Hashtable Enum ...

  3. 浏览器怎样更新java,Eclipse中js文件修改后浏览器不能及时更新的解决办法

    现在就分别把IE,firefox,chrome中解决办法贴出来供大家参考: 1.firefox(火狐浏览器)解决问题 第一步,在浏览器中敲入:about:config ,然后回车 第二步,在显示出的内 ...

  4. Java NIO中Charset类源码

    Java NIO中Charset类源码 public abstract class Charsetimplements Comparable<Charset> {private stati ...

  5. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法

    在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...

  6. java用redis缓存的步骤_详解在Java程序中运用Redis缓存对象的方法|chu

    这段时间一直有人问如何在Redis中缓存Java中的List 集合数据,其实很简单,常用的方式有两种: 1. 利用序列化,把对象序列化成二进制格式,Redis 提供了 相关API方法存储二进制,取数据 ...

  7. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

    Java中OutOfMemoryError(内存溢出)的三种情况及解决办法 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各 ...

  8. Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

    public static void main(String[] args) {} 或者 public static void main(String args[]) {} main方法是我们学习Ja ...

  9. JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

    原文地址:http://www.cnblogs.com/taven/p/3351841.html JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spr ...

最新文章

  1. 高并发整体可用性:一文详解降级、限流和熔断
  2. 电商的本质是“商”还是“用户”?
  3. 巩膜(眼白)灰色原因
  4. TIMEOUT will also publish one order event
  5. LeetCode--single-number复杂度
  6. 2020年度国家自然科学基金医学领域结果公布(9月27后可查)
  7. Python稳基修炼之计算机等级考试易错细节题4(含答案)
  8. angularjs之UI Grid 的刷新 本地数据源及HTTP数据源
  9. const 并不能加快 C 代码的运行速度?
  10. PTA是什么?BT-WIFI共存 转帖
  11. 在Ubuntu上使用apt-get安装MySQL+安全优化
  12. Android 如何直播RTMP流
  13. oracle的五种元素,五种元素
  14. python谁的教程好贴吧_python深挖65万人的明星贴吧,探究上万个帖子的秘密
  15. Typo: In word ‘worklist‘
  16. WinRAR破解注册方法
  17. ckplayer ajax,谁能帮我做一个脚本啊?能让这个网页视频播放可以拉动进度条 可以快进...
  18. iOS 手机记录登录账号密码列表
  19. 『Linux』CentOS 7下一些有趣的配置
  20. C补习--------->第六天,二级指针、指针和数组的关系、选择排序

热门文章

  1. 空间滤波(平滑滤波)
  2. Apache Hudi在AWS Glue和AWS EMR上同步元数据的异同
  3. QT移植:解决win下音频可以播放而linux下音频不能播放的问题(GStreamer; Unable to pause - “file:music/1.mp3“)
  4. 福利:总结10个Python赚钱的接单平台,兼职月入5000+
  5. 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper...
  6. c语言如何寻找排序最少次数,C语言快速排序比较次数问题
  7. Python列表切片操作
  8. 余承东再会张近东 战略合作升级点燃818第一把火
  9. The 15th Chinese Northeast Collegiate Programming Contest - K.City
  10. 计算机和运筹学杂志,请问运筹学和管理学的顶级期刊有哪些?能否介绍一些这些期刊的级别和投稿经验?...