1,多线程的使用场景
- 使用多线程来上传大量视频,充分利用多核CPU资源;
- 使用多线程来进行异步处理,由于业务逻辑时间较长,可以开启多线程去处理业务逻辑,主线程直接返回结果;
- 使用多线程来统计1000000以内求得的素数个数,可以开启3个线程,第一个线程从2开始,每次+3;第二个线程从3开始,每次+3;第三个线程从4开始,每次+3;同时利用一个原子类来统计总的个数。
final CountDownLatch latch = new CountDownLatch(2);
// 递减锁存器的计数,如果计数到达零,则释放所有等待的线程
latch.countDown();
// 使当前线程在 锁存器 倒计数为0之前一直等待,除非线程被中断。
latch.await();
数据迁移也可以利用多线程进行处理。
4,定时任务这一块,我使用多线程去定时打标和定时发邮件;充分利用多核CPU资源。
参考博客:线程池的使用场景,深入理解java线程池