线程方法详解

线程停止工作

1:自然执行完
2:抛出异常
3:stop() , resume() , suspend() :强制停止线程,会造成资源的无法释放
4:interrupt() : 中断一个线程,并不是强制停止。打个招呼
isInterrupted() : 判断线程是否处于中断状态
static 方法的 interrupted() 方法:判断线程是否处于中断状态,并把标志位改为false
5:一个方法如果抛出InterruptedException,会把中断的标志位改为false,需要在catch中手动终止
sleep(),join(),wait() : java 内 阻塞方法会抛出InterruptedException异常

线程状态

1:新建
2:就绪(拿到执行权开始运行)
3:运行
4:阻塞
5:死亡

线程方法

1:yield()–>放弃执行权,重新进入cpu的调度范围
2:守护线程,和主线程一起死,守护线程中,如果遇到try,finally,finally中的内容不一定执行

synchronized

1:对象锁
不同的对象可以一起执行,互不打扰,锁的是每个类的实例
2:类锁
锁的是类的class,在虚拟机中只有一份

volatile(具有可见性,没有原子性)

轻量级的同步机制,读取时获取主内存的数据,保存可见性,至于原子性,多线程下不具备原子性,一个操作可能对应多条执行指令

wait() notify() notifyAll()

为Object类所有的方法,wait() 等待,notify() 唤醒,某一线程执行完唤醒结束,notifyAll() 会唤醒所有等待的线程
使用范式:
等待方:
1:获取锁对象
2:使用循环,不满足条件.wait 等待
3:条件满足,执行业务操作
通知方:
1:获取锁对象
2:改变判断条件
3:获取执行结果

join()

线程加入方法,加入以后优先执行加入的方法

猜你喜欢

转载自blog.csdn.net/weixin_44971379/article/details/108525253