线程

线程的好处

1:能够合理的使用cpu资源,去完成复杂的应用程序计算

线程5种状态

1:新建状态,2:就绪状态,3:运行状态,4:阻塞状态,5:死亡状态。

线程实现方法

1:继承Thread类,2:实现Runable接口,3:实现Callable接口(需要借助FutureTask实现类),

4:线程池

newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待,

newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务

线程阻塞方式

1:sleep(属于Therad方法,不会释放同步锁),wait(属于Object属性,释放同步锁),join(属于Therad类,在此线程没执行完不执行后面的线程)。

线程停止方法

1:stop暴力停止线程(不推荐)2:使用intrrupt中断线程,3:使用退出标志等线程运行完

线程同步方法

1:使用synchronized关键字,使用Lock类,

区别

1:synchronized自动释放锁,Lock需手动释放。

2:synchroized少量同步时性能优于Lock,大量同步时Lock大于synoroiezd。

3:synchroized无法判断锁状态,Lock可判断锁状态。

线程死锁产生原因

 1:多个任务同时执行;

 2:这些任务都需要同时获得两个或以上的不同的同步资源来完成任务,并且这些资源是共享的;

 3:这些线程在获得部分资源后,都不会首先主动释放;

 4:线程获得了部分资源,在等待另一部分资源;另一部分资源被其它线程占用,并且在等待上述线程的资源;

线程通信

 1:使用volatile关键字,可见性,不保证原子性,阻止命令重排序。Atomic类可保证原子性。

 2:Object wait暂停 notifly唤醒notiflyAll唤醒所有

3:Lock情况下 借助Condition类await,singal,singalAll方法





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值