您的位置:首页 > 编程语言 > Java开发

JAVA中的并发和并行,进程和线程

2019-04-05 14:02 288 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/smarttally/article/details/89042899

一直以为并发和并行是一个概念,偶然了解数据库锁表的解决方案时,才理解到并发和并行的区别。这个概念又和进程和线程的区别相似,因此三个事情放一个文章里记录下。
一、数据库锁表:
1. 锁表发生在insert update 、delete 中;
2. 锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户;
3. 造成锁表的原因:
a.insert、update、delete操作,当一个进程执行且未commit时,另一个进程无法执行该资源;
b.注意,并发是不会产生该情况的,因为一个线程操作数据库时,另一个线程是不能操作数据库的,cpu 和i/o 分配原则。
4. 解决方案:
a.减少insert 、update 、delete 语句执行 到 commite 之间的时间。具体点批量执行改为单个执行、优化sql自身的非执行速度;
b.对异常进行回滚,事务。
二、并发和并行,进程和线程:
1. 并行指在同一时间点同时执行,并发是指在同一时间片段同时执行;
2. 并行类似于CPU的多核可以同时执行不同的进程,并发可以理解为单核只能在同一时间段跳跃在不同的线程上进行处理。
以上是我的一些理解,没做过深入的研究,仅笔记留作日后参考。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐