java - 同步有多贵?

标签 java synchronization nio

我正在使用 java.nio api 编写网络应用程序。我的计划是在一个线程上执行 I/O,并在另一个线程上处理事件。不过,要做到这一点,我需要同步读/写,这样就永远不会满足竞争条件。

请记住,我需要同时处理数千个连接,同步值得吗,还是我应该使用单个线程进行 I/O 和事件处理?

最佳答案

你在做什么类型的事件处理?可能的瓶颈在哪里?你有瓶颈吗?

从最简单的实现开始,一旦您了解了瓶颈,就进行优化。

如果你发现你的网络 IO 线程读取速度不够快,因为它花费了太多时间处理事件,那么创建一个缓冲队列,与之同步,并让一个事件处理线程在队列中工作。

您可能想对队列的大小设置一个限制,这样您就不会最终耗尽内存。如果网络线程即将填满队列,让它等待直到有更多空间。

过早的优化对任何人来说都不好玩。

但是,要回答您的问题,两个线程之间的同步不太可能成为瓶颈,您不必担心它的开销。

关于java - 同步有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647039/

相关文章:

java - 如何使用 scala 在读取 csv 文件中创建数据透视表

python - 基于 HTTP/REST 的文件同步

windows - 如何在Windows中自动同步日期和时间?

java - NIO:发送消息然后立即断开连接

java - 获取修改文件更改事件?

java - JDK中 `sun`开头的包源在哪里获取?

java - 如何删除 ElasticSearch 索引?

java - Android EditText 值在按钮单击时不会更改

java - Nutch 关于从 S3 读取 EMR 的问题

java - 如何使用 Java 检测同步冲突