线程的生命周期:

线程的生命周期有5中状态:

1.新建状态new:当线程对象创建后就进入了新建状态 Thread t=new Thread();

2.就绪状态Runnable:当调用线程对象的start()方法,线程就进入了就绪状态--处于就状(可运行)状态的线程,知识说明线程已经做好准备,随时等待CPU调度执行,并不是执行了t.start()此线程就立即会被执行

3.运行状态Running:当CPU调度了处于就绪状态的线程时,此线程才真正执行,即进入运行状态--就绪状态是进入运行状态的唯一入口,也就是说线程想要进入运行状态执行,先得处于就绪状态

4.阻塞状态Blocked:处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,知道其进入就绪状态,才有机会被cpu选中再次执行

根据阻塞状态产生的原因不同,可以细分为三种:

等待阻塞:运行状态中的线程执行wait()方法,本线程进入到等待阻塞状态

同步阻塞:线程在获取synchronize同步锁失败(因为锁被其他线程占有),它会进入同步阻塞状态

其他阻塞:调用线程的sleep()或者join()或发出I/O请求时,线程会进入阻塞状态,当sleep()状态超时,join()等待线程终止或者超时或者I/O处理完毕时线程重新转入就绪状态

5.死亡状态Dead:线程执行完了或者因异常退出run()方法,该线程结束生命周期

===========

什么是线程池?线程池有哪些优点?

每次使用线程的时候就去创建一个线程,这样实现起来非常简便,但是会有个问题:

如果并发的线程数量很多,并且每次线程都执行一个很短的任务就结束了,这样频繁的创建线程会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。

所以可以通过线程池来避免这些问题:

线程池:其实就是一个容纳对个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无须反复创建线程而消耗过多的资源

合理使用线程池能够带来的好处

1.降低资源的消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。

2.提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行

3.提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线程的数目,防止因为消耗过多的内存,把服务器累趴(每个线程需要大约1MB内存,线程开的越多,消耗内存也越多,最后死机)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值