写点什么

库调多了,都忘了最基础的概念 -《死锁与范式的碰撞》

作者:知识浅谈
  • 2022 年 9 月 11 日
    吉林
  • 本文字数:1160 字

    阅读完需:约 4 分钟

库调多了,都忘了最基础的概念-《死锁与范式的碰撞》

🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈

🔥 联系方式 vx:zsqtcc


🤞拿下,拿下🤞


温馨提醒:这篇文章涉嫌为平台原创文章,请收藏观看

🎈死锁产生的原因有哪些?

满足死锁的四个条件资源互斥:在同一时刻,同一资源只能被一个线程使用。不可剥夺:资源是不可剥夺的,在资源被其他线程占有的时候,资源不可被剥夺。请求保持:在线程请求其他资源的时候,一直持有已经占有的资源。循环等待:在不同线程之间,分别占有着其他线程请求获取的资源,形成了循环请求,就造成了循环等待。

🎈死锁的排查工具有哪些?

jstack:jstack -l 进程 id 查看死锁 jconsole:一种客户端工具 jvisualvm:一种客户端工具

🎈说一下 JUC 中的 Exchange 交换器?

Exchange 是用来两个线程交换数据的。Exchange 交换器是用来实现两个线程间的数据交换的,Exchanger 可以交互任意数据类型的数据,只要在创建的时候定义泛型类型即可。它的核心方法为 exchange,当线程执行到此方法之后,会休眠等待另一个线程也进入交换点,如果另一个线程也进入了交换点(也执行到了 exchange 方法),此时二者会交换数据,并执行后续的流程。举🌰:


public class Main {
private static Exchanger<String> exchange = new Exchanger<>(); public static void main(String[] args) throws ExecutionException, InterruptedException { new Thread(()->{ try { Thread.sleep(1000); String money="1毛钱"; String exchange1 = exchange.exchange(money); System.out.println("张三花了"+money+"买了个"+exchange1); } catch (InterruptedException e) { throw new RuntimeException(e); } }).start(); new Thread(()->{ try { Thread.sleep(2000); String girl="小姐姐"; String exchange1 = exchange.exchange(girl); System.out.println("卖家卖了个"+girl+"收款"+exchange1); } catch (InterruptedException e) { throw new RuntimeException(e); } }).start(); }}
复制代码

🎈什么是三范式?它有什么用?

范式是数据库中的一种约束,分别包括一范式,二范式,三范式,BC 范式。一范式:所有的字段都是原子性的,不可分的。二范式:对于主键,非主键不能有部份依赖,就是需要通过所有的主键才可推出非主键。三范式:不能存在传递依赖,A 推出 B,B 推出 C。BC 范式:每个属性都不部分依赖于候选键也不传递依赖于候选键。

🍚总结

以上是关于死锁和范式的总结,不肝了不肝了,希望有所帮助。

发布于: 刚刚阅读数: 4
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥 联系方式vx:zsqtcc

评论

发布
暂无评论
库调多了,都忘了最基础的概念-《死锁与范式的碰撞》_死锁_知识浅谈_InfoQ写作社区