`
wx1568444409
  • 浏览: 14555 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SelectionKeys remove异常

 
阅读更多
Set<SelectionKey> keys = selector.selectedKeys();
                    Iterator<SelectionKey> it = keys.iterator();
                    SelectionKey key = null;
                    while (it.hasNext()) {
                        key = it.next();
                        it.remove(); //错误处
                        SocketChannel sc = (SocketChannel) key.channel();
                        if (key.isValid()) {
                            if (key.isConnectable()) {
                                if (sc.finishConnect()) {
                                    sc.register(selector, SelectionKey.OP_READ);
                                    doWrite(sc);
                                }
                            } else {
                                System.out.println("connect to server failed");
                            }

                            if (key.isReadable()) {
                                ByteBuffer readBuffer = ByteBuffer.allocate(CommonConstants.B1024);
                                int readLength = sc.read(readBuffer);
                                if (readLength > 0) {
                                    readBuffer.flip();
                                    byte[] dataBytes = new byte[readBuffer.remaining()];
                                    readBuffer.get(dataBytes);
                                    String result = new String(dataBytes, Charset.forName(CommonConstants.UTF_8));
                                    System.out.println("received message from server [" + sc.getRemoteAddress()
                                            + "], contents: [" + result + "]");

                                    this.stop = true;
                                } else if (readLength < 0) {
                                    key.cancel();
                                    sc.close();
                                }
                            }
                        }
                    }

selector.selectedKeys():

Keys may be removed from, but not directly added to, the selected-key set. Any attempt to add an object to the key set will cause an UnsupportedOperationException to be thrown.

selector.keys():

The key set is not directly modifiable. A key is removed only after it has been cancelled and its channel has been deregistered. Any attempt to modify the key set will cause an UnsupportedOperationException to be thrown.

所以解决思路就是把错误处换成selectedKeys()


转载于:https://my.oschina.net/davidelena/blog/625323

分享到:
评论

相关推荐

    List.removeAll() 方法的性能效率

    在Java编程语言中,`List.removeAll()`方法是一个非常实用的函数,它允许我们从列表中一次性移除所有指定元素。这个方法是集合框架的一部分,它提供了高效的方式来进行元素的删除操作。本文将深入探讨`removeAll()`...

    视频去水印工具(Remove Logo from Video) 最新v4.0 破解版,好用爽到爆。

    但是视频上面的水印会一直播放,每一秒的视频都会附加水印,所以删除一个点是没有用的,这款Remove Logo Now可以完美的解决视频水印,可以一次性删除视频每一帧的水印广告,并且软件已经破解,需要的朋友可以下载...

    Java中ArrayList的removeAll方法详解

    ArrayList的removeAll方法详解 ArrayList的removeAll方法是一个常用的集合操作方法,该方法可以从一个ArrayList中删除所有在另外一个集合中的元素。但是,在实际开发过程中,removeAll方法的使用需要 thận重,因为...

    视频去水印工具注册版Remove Logo Now!

    《视频去水印工具Remove Logo Now!:轻松去除视频水印的专业之道》 在数字化的今天,视频内容创作已经成为日常生活的一部分。然而,当我们从网络上下载或获取的视频带有不必要的水印时,它可能会影响观看体验,甚至...

    IDEA的remove BOM操作不生效,解决也需要的jar

    其他编译器的java项目导入idea时,经常出现非法字符: \65279 ,通常直接remove BOM,操作即可。但是有时非常顽固不生效。配合我的这个说明,用这个jar包,配置好了后,然后在重新remove BOM。(个人实验的是win64...

    remove函数使用详解

    remove函数使用详解 1. 基本使用 2. 删除普通类型元素 3. 删除对象类型元素 4. 一次只删一个元素 1. 基本使用 remove() 函数可以删除列表中的指定元素 语法 list.remove( element ) 1 参数 element:任意数据类型...

    USB Safely Remove v6.1.5 USB安全删除(简体中文)+破解

    USB Safely Remove是一个可以将USB设备安全删除的辅助工具,对于频繁添加或者移除USB设备的用户非常有用,能够有效帮助您解决无法删除USB设备的困扰。旧版的序列号已经失效,破解工具可以正常使用。 USB Safely ...

    remove-bg,Remove.bg是一项免费服务,可以删除任何照片的背景。它100%自动工作.zip

    Remove.bg是一款强大的在线工具,专门设计用于快速、高效地从图片中移除背景。这个服务的独特之处在于它的全自动处理方式,用户无需具备图像编辑技能或进行复杂的选取操作,只需上传图片,系统就能自动识别并去除...

    RemoveDrive卸载U盘或者移动硬盘

    "RemoveDrive卸载U盘或者移动硬盘"是一个实用的工具,它主要针对Windows操作系统,用于方便、快捷地卸载插入的U盘或移动硬盘。在日常使用中,我们通常通过"我的电脑"或"资源管理器"来移除USB设备,但有时候这个过程...

    RemoveElement算法Demo

    《RemoveElement算法详解及其在Java中的实现》 在编程领域,算法是解决问题的关键工具,它是一种有序的操作步骤,用于处理数据或控制计算流程。本文将深入探讨一个名为"RemoveElement"的算法,并通过一个名为...

    超实用视频去水印工具RemoveLogoNow(内含注册码)

    remove logo now!破解版是一款徽章水印删除软件,如果您在下载视频使用的过程中看到里面已经有官方的广告或者是logo水印,这种情况就需要将水印删除了,视频水印的删除与图片时不一样的,对于图片来说,直接选择水印...

    remove_noise_NOISE_Python;去噪_

    本篇将详细介绍如何使用`remove_small_objects()`和`remove_small_holes()`这两个函数来去除图像中的噪声。 首先,`remove_small_objects()`函数用于消除图像中的小物体或小连通组件。在二值图像中,物体通常表现为...

    USB Safely Remove 5.3.x KeyGen

    USB Safely Remove是一个可以将USB设备安全删除的辅助工具,对于频繁添加或者移除USB设备的用户非常有用,能够有效帮助您解决无法删除USB设备的困扰。USB Safely Remove加入了一个堪称“杀手级”的功能──招回装置...

    USB Safely Remove 6.4.2.1298.zip

    USB Safely Remove Portable是一款用于毫不费力地快速断开任何可移动设备的工具。它不仅能节省时间,还能确保在拔掉设备时,所有数据都保留在设备上。Safely Remove是一个系统工具,旨在快速和安全地停止连接到您的...

    USB.Safely.Remove.安全移除工具

    USB Safely Remove 是一个增强型USB移动设备安全移除工具,比Windows自带的USB设备删除工具功能更强大使用更方便,USB Safely Remove 可以以不同的名称及图标显示多个移动设备,支持自定义隐藏任意USB移动设备,更...

    Remove Wyg.rar

    标题“Remove Wyg.rar”和描述中的“Remove Wyg.rar”都指向了一个特定的操作,即删除与"Wyg"相关的文件或程序。这可能是用户遇到了一个名为"Wyg"的软件、程序或者插件,并且需要卸载或移除它。这个压缩包文件很可能...

    USB_Safely_Remove

    USB_Safely_Remove是一款专为了解决USB设备安全移除问题而设计的软件。在日常使用USB设备(如U盘、移动硬盘等)时,我们可能会遇到无法正常卸载的问题,这时USB_Safely_Remove就能派上用场。它提供了一种更安全、更...

    Easy remove - Autodesk系列软件卸载工具 3.2.0.4.7z

    为了解决这一问题,"Easy remove - Autodesk系列软件卸载工具"应运而生。这款3.2.0.4版的卸载工具专门针对Autodesk旗下的软件设计,旨在提供一个高效且全面的卸载解决方案。 1. 工具简介: "Easy remove - ...

    Remove Edge下载 v1.0 微软Edge浏览器一键强制卸载工具

    Remove Edge,是GitHub上一个开源项目,完全免费。它支持一键强制卸载Edge浏览器,同时还会自动扫描清理所有残留。双击启动工具,它默认勾选一起卸载WebView,建议用户取消勾选。 因为如今有部分软件,仍依赖...

    Remove Bad Point.rar_BAD_Remove bad point

    "Remove Bad Point.rar_BAD_Remove bad point"这个项目显然涉及到一个特定的数据处理技术,即去除噪声点或异常值,以优化数据的平滑度和提高分析的准确性。这个过程被称为“坏点去除”或“异常值检测”。 在数据...

Global site tag (gtag.js) - Google Analytics