我在想,Executors.newSingleThreadExecutor()和Executors.newFixedThreadPool(1)有什么区别?
以下内容是从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);
}
}
}
}
}很可能我的理解有问题:)
发布于 2010-10-12 01:35:44
就像上面说的:
与其他等价的newFixedThreadPool(1)不同,返回的执行器保证不会被重新配置为使用其他线程。
不同之处在于(仅) SingleThreadExecutor以后不能调整其线程大小,您可以通过调用ThreadPoolExecutor#setCorePoolSize (首先需要强制转换)对FixedThreadExecutor进行调整。
https://stackoverflow.com/questions/3911100
复制相似问题