Java Executors.newSingleThreadExecutor()和Executors.newFixedThreadPool(1)之间的任何差异
我想知道,和之间的区别是什么 以下内容摘自javadoc 不同于其他等价物 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
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);