首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java NIO和SSL

Java NIO和SSL
EN

Stack Overflow用户
提问于 2012-12-31 02:49:18
回答 1查看 1.3K关注 0票数 7

我正在使用java NIO编写一个服务器,我有几个问题找不到答案。

首先,关于SSLEngine,如何在独立的线程中正确处理NEED_TASK?当我在单独的线程中调用任务时,它们会完成,但我不知道如何返回以执行另一个握手操作。一种选择是从执行委托任务的线程调用该操作,但我猜这不是实现该操作的方法。

另一个问题是从不同的线程调用interestOps(),而不是选择器线程。在尝试写入通道并未写入所有数据后,我需要更改关键兴趣。我想过在ROX NIO教程中使用某种更改队列,但我在这里读到了另一个线程,它不是最好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-31 03:00:22

首先关于SSLEngine,如何在独立的线程中正确地处理NEED_TASK。当我在单独的线程中调用任务时,它们会完成,但我不知道如何返回以执行另一个握手操作。

当引擎处于NEED_TASK状态时,它不能做其他任何事情。当任务完成时,您应该重复最初返回NEED_TASK的操作,并让引擎告诉您下一步要做什么。您需要阻止或禁用其他线程对该引擎的使用,直到任务完成,即不要在该通道上进行选择。

另一个问题是从不同的线程调用interestOps(),而不是选择器线程。在尝试写入通道并未写入所有数据后,我需要更改关键兴趣。我想过在ROX NIO教程中使用某种更改队列,但我在这里读到了另一个线程,它不是最好的方法。

那应该是我。我讨厌那些长队。我只是唤醒了选择器并更改了interestOps,没有发现有什么问题。选择器线程必须正确地处理准备好的零键,但它已经需要这样做了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14093546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档