`
情枫雨一
  • 浏览: 38774 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类

SelectionKeys在删除时报java.lang.UnsupportedOperationException错

阅读更多
昨天晚上在写java nio通讯的时候,报了下面的异常,到网上找了很长时间,终于解决了。
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection$1.remove(Collections.java:1012)
出错的原因是写了如下代码:
Selector selector = Selector.open();
Iterator<SelectionKey> it = selector.keys().iterator();
				while(it.hasNext()) {
					SelectionKey key = it.next();
					it.remove();

报错在最后一行产生,产生这个错误也很让人郁闷,调试了大半天也没结果,从源码也找不到原因。
java官方资料(http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=c7a0b0ec57e0dffffffffd21d2237d896878?bug_id=5098171)上给出一个解释,说这个不是一个bug,并给出了示例代码,也指出了出错的地方和解决方案。只需要把selector.keys()换成selector.selectedKeys()就可以了。
现在感觉看英文文档有很必要,因为英文文档已经给出很明确的提示:“Keys are added to the selected-key set by selection operations. A key may be removed directly from the selected-key set by invoking the set's remove method or by invoking the remove method of an iterator obtained from the set. Keys are never removed from the selected-key set in any other way; they are not, in particular, removed as a side effect of selection operations. Keys may not be added directly to the selected-key set.”。中间反复出现了“selected-key”,而中文文档上没有,也是由于刚开始看中文的,所以没有注意到。最后比较两个方法,文档上也给出了很清楚的说明,自己却没注意到。
分享到:
评论
1 楼 carl32hao 2015-09-08  
有用,谢谢

相关推荐

    java.lang.UnsupportedOperationException异常(csdn)————程序.pdf

    java.lang.UnsupportedOperationException异常(csdn)————程序

    Android 兼容性问题:java.lang.UnsupportedOperationException解决办法

    主要介绍了Android 兼容性问题:java.lang.UnsupportedOperationException解决办法的相关资料,需要的朋友可以参考下

    Android webveiw 出现栈错误解决办法

    主要介绍了Android webveiw 出现栈错误解决办法的相关资料,出现java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes,这里提供解决办法,需要的朋友...

    1 ElasticSearch 安装

    ElasticSearch Linux系统安装教程

    prueba-javassist:用于动态代码插入的字节码级别的类操作测试

    测试javassist 用于动态代码插入的字节码级别的类操作测试虚拟机参数-agentlib:jdwp = ... 根据您运行的 JVM,可能会出现以下错误:线程“HotSwap”中的异常 java.lang.UnsupportedOperationException:未实现架构更改

    list使用过程中遇到的坑

    xception in thread "main" java.lang.UnsupportedOperationException Arrays.asList转化基本数据类型数组的时候有个意想不到的坑 当我们在实际业务开发过程中,难免会遇到数组转List的操作,通常我们所选择的就是...

    环信移动客服DEMO无问题版

    &gt; com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException 解决这个问题

    java 操作错误(UnsupportedOperationException)

    java 操作错误(UnsupportedOperationException) java 操作错误(UnsupportedOperationException)

    MockDialogInterface.rar_All You Need

    A mock {@link android.content.DialogInterface} class. All methods are non-functional and throw {@link java.lang.UnsupportedOperationException}. Override it to provide the operations that you need.

    Proguard v5.3.3.rar

    代码混淆的时候出现java.lang.UnsupportedOperationException: Unsupported class version number [52.0] (maximum 51.0, Java 1.7),原因是proguard.jar版本太低,需要5.0以上的版本

    java 面试题 总结

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    超级有影响力霸气的Java面试题大全文档

     java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或...

    odd-collection:一些集合的想法,用 Java 8 实现

    这个概念的后果是:putAll 方法,这是一个可选方法,抛出一个 UnsupportedOperationException,因为我不能保证给定 Map 的所有元素都会添加到 BijectiveMap。 有些可能会被压缩,并且不能保证如果您尝试放置具有 5 ...

    java范例开发大全(pdf&源码)

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

Global site tag (gtag.js) - Google Analytics