线程的生命周期
新生 实例化线程对象的时候 就是新生状态
就绪 线程可以执行 没有获取到cpu的执行权
运行 线程正在执行操作
阻塞 线程休息一会 sleep(时间) wait()
死亡 线程操作执行结束
第三种创建线程的方式
步骤:
1.定义一个类实现Callable接口
2.实现其方法 (执行线程的操作)
3.实例化这个类
4.实例化任务类
5.创建一个线程 开启线程
6.调用给get() 方法得到其返回值
线程池
背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。
思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。
好处:
提供一个容器,用于来管理线程
保证线程中任务执行完全
提高响应速度(减少了创建新线程的时间)
降低资源消耗(重复利用线程池中线程,不需要每次都创建)
便于线程管理(。。。)
corePoolSize:核心池的大小
maximumPoolSize:最大线程数
keepAliveTime:线程没有任务时最多保持多长时间后会终止