Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同步有多贵?_Java_Synchronization_Nio - Fatal编程技术网

Java 同步有多贵?

Java 同步有多贵?,java,synchronization,nio,Java,Synchronization,Nio,我正在使用java.nioapi编写一个网络应用程序。我的计划是在一个线程上执行I/O,在另一个线程上处理事件。但要做到这一点,我需要同步读/写,这样就永远不会满足竞争条件 请记住,我需要同时处理数千个连接,同步值得吗,还是应该使用单个线程进行I/O和事件处理?您在做什么样的事件处理?可能的瓶颈在哪里?你有瓶颈吗 从最简单的实现开始,并在了解瓶颈后对其进行优化 如果您发现网络IO线程的读取速度不够快,因为它花费了太多的时间来处理事件,那么创建一个缓冲队列,与之同步,并让一个事件处理线程在队列中工

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


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

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

从最简单的实现开始,并在了解瓶颈后对其进行优化

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

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

过早优化对任何人来说都不有趣


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

我认为它的效率将取决于同步部分的粒度。

这是一个非常普遍的问题。这在很大程度上取决于您如何使用同步。显然同步比不同步要贵,但是。。。如果你需要它,你就需要它。一个人愿意付多少钱?;-)@Ben:我想你的意思是“不必担心它的开销”,我想将读/写和事件处理解耦,但如果同步成本太高,我认为不值得。想象一下每秒同步数千次;这会造成太大的压力吗?你为什么要将其解耦?你知道你需要吗?你试过了吗?我们无法知道您的具体实现会对性能产生什么影响。每秒同步数千次听起来并不紧张。你的操作系统已经在后台不断地这样做了。