场景
场景 |
方法 |
任务少, 不频繁 |
直接使用线程 |
任务数稳定,频繁 |
使用线程池 |
线程池
优点
- 不用频繁的创建和销毁线程
- 不需要担心OOM
- 直接往任务队列添加任务即可
- 核心线程忙不过来,可以自动增加到最大线程数
构造参数
- 核心线程数
- 最大线程数
- 空闲活跃时长
- 时长单位
- 阻塞队列
- 线程工厂
- 拒绝策略
-
- 直接丢弃
- 替换最后一个
- 抛异常
- 谁提交的任务谁执行
- --- 自行 扩展
工具类
Executors
方法 |
描述 |
newSingleThreadExecutor |
创建一个单线程的线程池 |
newCachedThreadPool |
创建一个无上限的线程池(Integer.MAX) |
newFixedThreadPool |
创建一个固定线程数的线程池 |
需求
小白和他的朋友门,连续输了10几把游戏, 决定去餐厅吃饭了,3个人,直接点了10盘菜,决定化悲愤为食量
实现
编写代码
先将之前的公共方法抽成一个工具类
package com.dance;
import java.util.StringJoiner;
public class SmallTool {
/**
* 休眠方法
* @param millis 毫秒
*/
public static void sleep(long millis){
try {
Thread.sleep(millis);
} catch (InterruptedExcep