class Test{private static ExecutorService exec = Executors.newCachedThreadPool();void test(){
    ExecutorService exec = Executors.newCachedThreadPool();
    //....
}}
请问应该用静态变量的形式,这样就只有一个cachedThreadPool ?还是每个方法里用之前都写一遍 ExecutorService exec = Executors.newCachedThreadPool();谢谢

解决方案 »

  1.   

    就是Test是后台的类我   客户端每次new Test().test()执行一些异步代码
    多个实例的话都调用test()方法, 每个实例都多次执行 Executors.newCachedThreadPool();
    还是多个实例共用静态变量的那个 Executors.newCachedThreadPool();
      

  2.   

    这是线程池,保留一个实例就可以了。而且你也不用去考虑线程安全问题,因为 java.util.concurrent 包中的类都是线程安全的。
      

  3.   

    你准备在什么场景下使用线程池?如果是 C/S 程序的话,最好在程序关闭时处理一下 ExecutorService 的 shutdown 方法,以使用应用程序能够完全退出。如果是 B/S 程序的话,可以创建一个 ServletListener,在 Servlet 容器初始化时初始化线程池,在 Servlet 容器关闭时调用 shutdown 以便关闭线程池。