new ThreadPoolExecutor(2, 100, 1000,TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(20),new ThreadPoolExecutor.CallerRunsPolicy()); 你应该没理解这里面的参数意思。 首先当你核心线程池满了,如果还有线程需要执行那这个时候就会丢到LinkedBlockingDeque等待执行,如果LinkedBlockingDeque又满了,这个时候就会开最大线程池了,当然如果最大线程池也满了就会用到new ThreadPoolExecutor.CallerRunsPolicy()这个东西了。
你应该没理解这里面的参数意思。
首先当你核心线程池满了,如果还有线程需要执行那这个时候就会丢到LinkedBlockingDeque等待执行,如果LinkedBlockingDeque又满了,这个时候就会开最大线程池了,当然如果最大线程池也满了就会用到new ThreadPoolExecutor.CallerRunsPolicy()这个东西了。