多线程中的死锁,活锁,饥饿,无锁以及关闭多线程方法

多线程中的死锁,活锁,饥饿,无锁

前两天面试被问到死锁,活锁,饥饿。问到饥饿当时懵了,啥是饥饿啊。。。之后有时间赶紧查了查,这里作下总结。

死锁

死锁是两个或者两个以上的线程抢同一个资源造成的互相等待的现象。

活锁

活锁是两个线程都很友好,没有互相抢夺资源,而是互相谦让,你让我,我让你,然后因为谦让造成的等待现象。

饥饿

饥饿和多线程的优先级有关,线程在执行的时候,优先级高的线程一直能抢到资源,优先级抢不到资源,这就是饥饿。

无锁

无锁是所有的线程都能访问并修改同一个资源,但同时只有一个线程能修改成功。


停止多线程的方法

1.使用stop强行中断线程(此方法为作废过期方法),不推荐使用,暴力终止,可能使一些清理性的工作得不到完成。还可能对锁定的内容进行解锁,容易造成数据不同步的问题。

2.通过抛异常停止

发表评论