线程池CachedThreadPool
没有核心线程,只有非核心线程,并且每个非核心线程空闲等待的时间为60s,采用SynchronousQueue队列
- 由于maximumPoolSize是无界的,所以如果线程处理任务速度小于提交任务的速度,则会不断地创建新的线程,这时需要注意不要过度创建,应采取措施调整双方速度,不然线程创建太多会影响性能。
采用SynchronousQueue队列。CachedThreadPool适用于有大量需要立即执行的耗时少的任务的情况。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for(int i = 0;i<30;i++){ final int finali = i; Runnable runnable = new Runnable() { @Override public void run() { try { Thread.sleep(2000); Log.d("Thread", "run: "+finali); } catch (InterruptedException e) { e.printStackTrace(); } } }; cachedThreadPool.execute(runnable); } } }