【发布时间】:2010-07-30 13:55:49
【问题描述】:
在进行 RMI 调用时,是否有任何整洁的方法来保持相同的线程名称?目前,如果我有一个进行 RMI 调用的命名线程,在 RMI 调用的服务器端,Thread.currentThread().getName() 会返回类似“RMI TCP Connection(4)-10.0.0.2”之类的不明确信息。
当然,我可以在我所有的 RMI 方法中添加一个参数 String callingThreadName,然后将每个 RMI 方法实现的第一行设为 Thread.currentThread().setName(callingThreadName),但这并不是最简洁的方法。有什么方法可以至少获得通过 RMI 连接传输的线程名称背后的一些含义?
【问题讨论】:
-
请问您为什么要这样做?为什么在服务器端处理请求的线程的名称甚至很重要?您可能正在尝试解决真正问题的副作用。
-
正如Romain下面猜测的那样,主要是在不同的日志文件中一致地跟踪线程。该系统是一个分布式计算 - 每个工作机器创建一个对象,其中包含一个方法,该方法由来自主服务器的多个线程调用以执行实际计算。由于计算的性质,线程需要在 master 和 worker 之间来回切换,所以在 worker 上启动线程会让我在 master 上遇到同样的问题。
标签: java multithreading rmi