java多线程学习

一、线程状态
1.NEW,创建线程
2.RUNNABLE, 等待CPU调度
3.BLOCKED,阻塞状态,同步锁
4.WAITING,等待状态,wait,suspoed,park
5.TIMED_WAITING,根据时间等待状态,有超时时间
6.TERMINATED,终止状态

二、线程终止
1.stop方法,强行终止线程,如果线程执行到一半在等待状态也会被终止,不会抛异常,会导致程序运行结果错误
2.interrupte方法,终止线程,会抛出interrupteException方法,程序员可以自行控制异常逻辑
3.循环里面用变量控制退出线程

三、线程封闭
1.栈封闭,2.ThreadLocal 变量封闭

四、线程通信
1.suspend, resume 不会释放锁,对执行顺序有要求,已被弃用
2.wait, notify, notifyAll 会释放锁,对执行顺序有要求
3.park, unpark 不会释放锁,对执行顺序没有要求

五、线程池
newFixedThreadPool(int nThreads) 固定大小、队列容量无界的线程池。核心线程数= 最大线程数
newCachedThreadPool() 大小无界的缓冲线程池。它的任务队列是一个同步队列。任务加入到池中,如果池中有空闲线程,则用空闲线程来执行,如无则创建新线程执行。池中线程空闲超过60秒,将被释放销毁。线程数随任务多少的变化,适用于执行耗时较小的异步任务。池的核心线程数=0,最大线程数=Integer.Max_Value
newSingleThreadExecutor() 只有一个线程来执行无界任务队列的单一线程池。该线程池确保任务按加入的顺序一个一个一次执行。当唯一的线程因任务异常中止时,将创建一个新的线程来执行后续任务。与newFixedThreadPool 的区别是,单一线程池固定了大小不能改变。
newScheduledThreadPool(int corePoolSize) 能定时执行任务的线程池。该池的核心线程数由参数指定 ,最大线程数= Integer.Max_Value

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值