hqtc
V2EX  ›  Java

各位大佬大佬,帮忙看一段 Java 线程池的代码

  •  
  •   hqtc · Aug 18, 2017 · 5903 views
    This topic created in 3191 days ago, the information mentioned may be changed or developed.

    // 初始化执行器

        threadPool = Executors.newFixedThreadPool(PROCESSOR_NUMBER, new ThreadFactory()
        {
            private AtomicInteger seqNo = new AtomicInteger(1);
            
            public Thread newThread(Runnable r)
            {
                return new Thread(r, "Message-Thread-" + seqNo.getAndIncrement());
            }
        });
    

    Fortify 扫描了之后报出如下警告, J2EE Bad Practices:Threads (FORTIFY.J2EE_Bad_Practices--Threads) 0. InCall: Thread()

    请问该怎么改啊?

    6 replies    2017-08-19 10:53:14 +08:00
    hustlike
        1
    hustlike  
       Aug 18, 2017
    感觉这个是 Fortify 的问题啊,没有识别出这里是线程池,估计是觉得自己创建线程不是 best practice 吧。
    palmers
        2
    palmers  
       Aug 18, 2017
    好像是说你创建线程的时候方式不太好 可能是因为没有指定 Group 这方面区别我也不是很清楚 你自己看下
    hqtc
        3
    hqtc  
    OP
       Aug 18, 2017
    @hustlike 哎对啊,我看这段代码意思只是给后面要执行的线程绑定一个带编号的名字而已,又没有 start() 和 run()... 感觉要自定义一个 Thread 子类了,不知道能不能消掉警告,哎,就很烦
    hqtc
        4
    hqtc  
    OP
       Aug 18, 2017
    @palmers 不是很理解 Group ,没用过
    SoloCompany
        5
    SoloCompany  
       Aug 18, 2017 via iPad
    没办法,j2ee 的规范之一貌似是 webapp 不能自己管理线程,即使非禁止

    如果你写的不是 webapp,那就是 fo   rtify 没配置好啰
    hustlike
        6
    hustlike  
       Aug 19, 2017
    @hqtc 可以绕过这个问题,通过第三方的包去做这个事情,不过意义不大……
    guava 就有 ThreadFactoryBuilder
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1799 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 00:00 · PVG 08:00 · LAX 17:00 · JFK 20:00
    ♥ Do have faith in what you're doing.