Java Executors.newSingleThreadExecutor()和Executors.newFixedThreadPool(1)之间的任何差异

Java Executors.newSingleThreadExecutor()和Executors.newFixedThreadPool(1)之间的任何差异,java,Java,我想知道,和之间的区别是什么 以下内容摘自javadoc 不同于其他等价物 newFixedThreadPool(1)返回了 遗嘱执行人保证不会 可重新配置以使用额外的 线程 我尝试下面的代码,似乎没有区别 package javaapplication5; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Level; imp

我想知道,和之间的区别是什么

以下内容摘自javadoc

不同于其他等价物 newFixedThreadPool(1)返回了 遗嘱执行人保证不会 可重新配置以使用额外的 线程

我尝试下面的代码,似乎没有区别

package javaapplication5;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author yan-cheng.cheok
 */
public class Main {
    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        //ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
        ExecutorService threadExecutor = Executors.newFixedThreadPool(1);
        threadExecutor.submit(new BadTask());
        threadExecutor.submit(new Task());      
    }

    class BadTask implements Runnable {
        public void run() {
            throw new RuntimeException();
        }
    }

    class Task implements Runnable {
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println("[LIVE]");
                try {
                    Thread.sleep(200);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}
PackageJavaApplication5;
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.Executors;
导入java.util.logging.Level;
导入java.util.logging.Logger;
/**
*
*@author-yan-cheng.cheok
*/
公共班机{
公共静态void main(字符串[]args){
新的Main();
}
公用干管(){
//ExecutorService threadExecutor=Executors.newSingleThreadExecutor();
ExecutorService threadExecutor=Executors.newFixedThreadPool(1);
threadExecutor.submit(new BadTask());
提交(新任务());
}
类BadTask实现可运行{
公开募捐{
抛出新的RuntimeException();
}
}
类任务实现可运行{
公开募捐{
对于(int i=0;i<100;i++){
System.out.println(“[LIVE]”);
试一试{
睡眠(200);
}捕获(中断异常例外){
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
}
}
很可能是我的理解有问题:)

就像上面说的:

与其他等效的newFixedThreadPool(1)不同,返回的执行器保证不可重新配置以使用其他线程

区别在于(只是)SingleThreadExecutor以后不能调整其线程大小,这可以通过调用FixedThreadExecutor(需要先转换)来完成。

就像上面说的:

与其他等效的newFixedThreadPool(1)不同,返回的执行器保证不可重新配置以使用其他线程


区别在于(仅限于)SingleThreadExecutor不能在以后调整其线程大小,您可以通过调用(需要先转换)对FixedThreadExecutor进行调整。

但是,如何调整newFixedThreadPool(1)的线程大小?(ThreadPoolExecutor)newFixedThreadPool(1))。setCorePoolSize(3);但是,如何调整newFixedThreadPool(1)的线程大小?(ThreadPoolExecutor)newFixedThreadPool(1)).setCorePoolSize(3);