java - 如何为可调用线程命名?

标签 java multithreading executorservice java.util.concurrent

我正在使用 ExecutorService 线程池执行一个 Callable Object。我想给这个线程起个名字。

更具体地说,在旧版本中我是这样做的 -

Thread thread = new Thread(runnable Task);
thread.setName("My Thread Name");

我在 log4j 日志记录中使用线程名称,这对故障排除有很大帮助。现在我正在将我的代码从 Java 1.4 迁移到 Java 1.6。我已经写了这个(如下所示)-但我不知道如何给这个线程命名。

private final ExecutorService executorPool = Executors.newCachedThreadPool();
Future<String> result = executorPool.submit(callable Task);

请给我一些想法来给这个线程命名?

最佳答案

我目前正在这样做:

    someExecutor.execute(new Runnable() {
        @Override public void run() {
            final String orgName = Thread.currentThread().getName();
            Thread.currentThread().setName(orgName + " - My custom name here");
            try {
                myAction();
            } finally {
                Thread.currentThread().setName(orgName);
            }
        }
    });

关于java - 如何为可调用线程命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227040/

相关文章:

java - 为什么ExecutorService中的线程不能被中断?

java - ExecutorService 应该是静态的还是全局的

java - 如何在 Kotlin 中向 Gson 注册一个 InstanceCreator?

java - 执行器服务invokeAll

java - 按减法排序

multithreading - 异步、Task.Delay 和 HtmlHelper MVC 4

java - HashedWheelTimer vs ScheduledThreadPoolExecutor 以获得更高的性能

java.lang.SecurityException : Permission denied (missing INTERNET permission? ) 即使在 android list 中添加此权限

c# - 如何避免在 ChannelReader.WaitToReadAsync 时抛出 InvalidOperationException?

Linux用户空间线程、内核线程、轻量级进程