线程池

用户写线程有两种方式:

  • 方式一:
用户自己写线程
	Runnable r=newRunnable(){重写run方法}
	Thread t1=new Thread(r);
	Thread t2=new Thread(r);
	t1=new Thread();
	...
用户要自己控制线程对象的作用域
相当于用户自己来管理线程	 
  • 方式二:
Java给提供了一个线程池的概念

线程池

把若干用户线程,添加到线程池中,有线程池来管理线程

为什么使用线程池

  1. 减少了创建和销毁线程的次数,每个工作线程都可以被重复使用或利用,可以并发执行多个任务
  2. 可以根据系统的承受能力,调整线程池中的额工作线程的数目,防止因为消耗过多的内存,而使服务器宕机(down)
  3. 结论:就是Java给提供了一个写api的方法,用于更好的管理线程,让程序员主要用于写线程的逻辑

线程池的使用:

有一个Executors的工具类,此类提供了若干静态方法,这些静态方法用于生成线程池的对象

  1. Executors.newSingleThreadExecutor();
    创建一个单线程的线程池,这个线程池只有一个线程在工作,即,单线程执行任务,如果这个唯一的线程因为异常结束,那么会有一个新的线程来代替他,因此线程池保证所有的任务是按照任务的提交顺序来执行
  2. Executors.newFixedThreadPool();
    创建一个固定大小的线程池,每次提交一个任务就创建一个线程,直到线程到达线程池的最大大小,线程的大小一旦达到最大值,就会保持不变,如果某个线程因为执行异常而结束,那么线程池就会补充一个新的线程
  3. Executors.newCachedThreadPool();
    创建一个可以缓冲的线程池,如果线程的大小超过了处理的任务所需要的线程,那么就会瘦部分的线程,当任务的数量增加的时候,此线程池不会对线程池的大小做限定,线程池的大小完全依赖于操作系统能够创建的最大的大小
  4. Executors.newScheduledThreadPool();
    创建一个大小无限制的线程池,次线程池支持定时以及周期性的执行任务的需求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值