有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为TCP轮询分配核心

我们有几个Java应用程序在同一台Linux机器上运行,并通过TCP来回发送消息。我们使用ServerSocket和Socket来创建连接。我希望尽可能减少这种通信的延迟。似乎可以在我们的机器上分配一个核心来进行连续的TCP轮询,这将提高性能。在Linux和/或Java中是如何实现的


共 (2) 个答案

  1. # 1 楼答案

    事实并非如此。在Java中,无法将线程分配给内核

    分配一个内核不会提高性能;相反,它可能会减少它。我不知道你说的“轮询”到底是什么意思,但你不能使用套接字:你必须在read()中使用单独的线程阻塞。如果你正在考虑使用InputStream.available(),那你就完全错了,应该使用带有选择器的NIO

  2. # 2 楼答案

    有一种方法可以实现这一点,但它不是便携的

    你需要做的是: 1) 查找本机线程id 2) 设置本机线程的关联性

    您可以使用sun下的包中不支持的类来获取本机线程id(在linux上是一个进程id)。jvm。热点。您可以通过包含sa jdi来链接这些类。jar(与jdk捆绑)来构建路径。因为我不喜欢从另一个网站复制答案,所以你应该去阅读github的说明

    获得本机线程id后,应使用“taskset”命令行实用程序更改关联性。你可以从另一篇文章中找到说明how to use taskset