我想知道为什么ExecutorService实际上可以多次执行相同的Thread.
因为线程的通常生命周期终止于TERMINATED afaik ..
所以,
public class TestThread extends Thread {
AtomicInteger counter = new AtomicInteger(0);
@Override
public void run() {
System.out.printf("%d\n", counter.addAndGet(1));
}
public static void main(String[] args) throws InterruptedException {
ExecutorService es = Executors.newCachedThreadPool();
TestThread t = new TestThread();
es.execute(t);
es.execute(t);
es.shutdown();
}
}
这适用于我实际上期望非法状态异常,如在这种情况下:
t.start();
t.start(); =>BAM!
非常感谢解开执行背后的魔力!