您现在的位置是:主页 > news > 公司部门管理制度/郑州专业seo首选
公司部门管理制度/郑州专业seo首选
admin2025/5/13 20:29:39【news】
简介公司部门管理制度,郑州专业seo首选,织梦做的网站进不去,如何看一个网站开发语言📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言Ὅ…
公司部门管理制度,郑州专业seo首选,织梦做的网站进不去,如何看一个网站开发语言📋 个人简介
💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言Ὅ…
📋 个人简介
- 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
- 📝 个人主页:馆主阿牛🔥
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
- 📣 系列专栏:java 小白到高手的蜕变🍁
- 💬格言:要成为光,因为有怕黑的人!🔥
目录
- 📋 个人简介
- 前言
- 什么是线程的死锁
- 案例
- 怎么避免死锁问题
- 结语
前言
死锁的问题·相信大家看的博文多了也很熟悉,本文将从案例入手,介绍一下死锁。
什么是线程的死锁
- 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放自己需要的同步资源,就形成了线程的死锁。
- 出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处阻塞状态。
案例
package 死锁;public class Deadlock {public static void main(String[] args) {String s1 = new String("我是s1");String s2 = new String("我是s2");// 线程一new Thread(){@Overridepublic void run() {synchronized (s1){ // 锁s1try {sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(s1.toString());synchronized (s2){ // 锁s2System.out.println(s2.toString());}}}}.start();// 线程二new Thread(){@Overridepublic void run() {synchronized (s2){ // 锁s2try {sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(s2);synchronized (s1){ // 锁s1System.out.println(s1);}}}}.start();}
}
这个案例就是一个典型的死锁问题,当线程一占用锁s1和线程二占用锁s2后,他们都需要往下执行,但线程一向下执行需要锁s2,而s2被线程二占用;同理,线程二向下执行需要锁s1,而s1被线程一占用。这就形成了死锁。
可以看运行结果图,不会出现异常,不会出现提示,只是所有的线程都处阻塞状态。
怎么避免死锁问题
- 专门的算法、原则。
- 尽量减少同步资源的定义。
- 尽量避免嵌套同步。
结语
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门