自己写了一个多线程买票的实例,运行结果也对了,但是自己解释不了,谁能帮忙解释一下为什么结果会正确?import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class Study9 {
private static int[] arr={1,2,3,4,5,6,7,8,9,10};
public static void main(String[] args) {
ExecutorService executor=new ThreadPoolExecutor(5, 5, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(10),
new ThreadPoolExecutor.CallerRunsPolicy());
for(int i=0;i
final int n=i;
executor.execute(new Runnable() {
@Override
public void run() {
System.out.println("窗口:"+Thread.currentThread().getName()+"卖出了票"+arr[n]);
}
});
}
executor.shutdown();
}
}