java - 让同一台机器上的客户端运行在不同的线程上

标签 java multithreading

我读过一个客户端-服务器应用程序,客户端通过服务器进行交互。因此,为此目的,我想在不同的线程上创建客户端。 (如果没有,它们通常会被 IO 阻塞)。

这是我的客户端代码:

public class Client {

   //some client code here

   public static void main(String[] args) {
        new Thread() {
            @Override
            public void run() {
                long threadId = Thread.currentThread().getId();
                System.out.println("Client creator thread id: " + threadId);
                                Client c = new Client();
                                // some code to run client
            }

        }.start();
   }
}

我多次运行这个类文件(通过直接在 IDE 中运行,或创建 bat 文件)。我注意到它们都在同一个线程上(相同的线程 ID)。我无法解释为什么。

我认为我遇到的问题是:我不在同一个类中创建多个线程,而是多次运行该类。虽然我认为这会产生奇怪的问题,但仍然无法解释为什么。

请为我解释一下以及如何纠正这个问题。

谢谢:)

最佳答案

可能是因为您每次运行一个线程,结束后再次运行 main() 方法,这会创建另一个具有相同 id 的线程。 id 的相似性是预期的,根据 getID() 方法中的文档,该方法表示“当线程终止时,可以重用此线程 ID。” Read here了解更多。

关于java - 让同一台机器上的客户端运行在不同的线程上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104170/

相关文章:

java - 语法错误对我来说毫无意义

c# - Java 和 C# 的 String 实现

java - 如何使用 Apache POI for Java 将 Excel 工作表复制到另一个工作簿中?

java - 自定义 Sonar 规则 - ClassNotFoundException : com. sonar.sslr.api.AstAndTokenVisitor

java - 第二个线程退出而不是向前循环

c - 将多个参数传递给 C 中的线程 (pthread_create)

java - 摘要关键字的放置

c - 如何在arduino板上创建一种线程?

multithreading - 带参数的 Kotlin 线程安全 native 惰性单例

c++ - 从 Boost 线程返回 Double