有 Java 编程相关的问题?

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

java标题线程[pool485thread1]在eclipse的调试窗口中意味着什么

我正在使用EclipseJuno,在调试窗口中,我看到很多线程正在运行,其中有一个条目

Thread [pool-485-thread-1] Running

这个条目解释了什么
是单个池中有485个线程还是485个不同的池
此项定期增加,即现在正在运行线程[pool-1125-Thread-1]。这是个问题吗


共 (3) 个答案

  1. # 1 楼答案

    这看起来像是线程工厂指定的线程的默认名称。 我只能假设您正在创建新的线程池,而不是新的线程

  2. # 2 楼答案

    这很可能来自DefaultThreadFactory类(如下所示)。这表示自JVM启动以来,您已经创建了485个池,并且该线程是第485个池中的第一个线程

    如果这些池在很长一段时间内被创建和销毁,这并不一定表明存在严重问题。然而,继续创建线程池是有点奇怪的,比如也许值得看看代码,看看是否可以重用一些线程池(这可能有助于提高应用程序的性能)

    static class DefaultThreadFactory implements ThreadFactory {
        private static final AtomicInteger poolNumber = new AtomicInteger(1);
        private final ThreadGroup group;
        private final AtomicInteger threadNumber = new AtomicInteger(1);
        private final String namePrefix;
    
        DefaultThreadFactory() {
            SecurityManager s = System.getSecurityManager();
            group = (s != null) ? s.getThreadGroup() :
                                  Thread.currentThread().getThreadGroup();
            namePrefix = "pool-" +
                          poolNumber.getAndIncrement() +
                         "-thread-";
        }
    
        public Thread newThread(Runnable r) {
            Thread t = new Thread(group, r,
                                  namePrefix + threadNumber.getAndIncrement(),
                                  0);
            if (t.isDaemon())
                t.setDaemon(false);
            if (t.getPriority() != Thread.NORM_PRIORITY)
                t.setPriority(Thread.NORM_PRIORITY);
            return t;
        }
    }
    
  3. # 3 楼答案

    What does title Thread[pool-485-thread-1] means ...

    它意味着创建该线程的特定线程池想要表达的意思。假设你知道线程在做什么,你应该能够找出是什么在创建它们。。。然后确认“显而易见”的意思是正确的

    Is this a problem?

    从表面上看,应用程序似乎在重复创建线程池。。。这很可能意味着线程池在回收线程方面不会有效。这对性能不好