java多线程学习之二——多线程的优势和风险
来源:互联网 发布:广西网络广播电视台 tv 编辑:程序博客网 时间:2024/06/06 02:07
优势:
1、 提高系统的吞吐率。多线程编程使得一个进程中可以有多个并发的操作。例如:一个线程因为I/O操作而处于等待时,其他线程仍然可以执行其操作。
2、 提高响应性。使用多线程编程的情况下,对于GUI软件(桌面应用程序)而言,一个慢的操作并不会导致软件的界面出现被“冻住”的现象而无法响应其他用户的其他操作。
3、 充分利用多核CPU资源。避免资源浪费。
4、 最小化对系统资源的使用。一个进程中的多个线程可以共享其所在进程所申请的资源。
5、 简化程序的结构。
6、多线程是异步的。
风险:
1、 线程安全问题。多个线程共享数据的时候,如果没有采取相应的并发访问措施,那么就会产生数据一致性的问题,如读取脏数据(过期的数据)、丢失更新(更新被覆盖)等。
2、 线程的生命特征问题。代码编写不适当可能导致某些线程一直处于等待其他线程释放锁的状态,即产生了死锁。例如:线程T1拥有锁L1,并试图去获得锁L2,而此时线程T2用户拥有锁L2而试图是获得锁L1,这就导致线程T1和T2一直处于等待对方释放锁而一直又得不到的状态。等等。
3、 上下文切换。多线程编程的必然副产物,增加了系统的消耗,不利于系统的吞吐率。
4、 可靠性。一方面有利于可靠性,例如:某个线程意外终止了,但这并不影响其他线程继续其处理。另一方面,线程是进程的一个组件,它总是存在于特定的进程中的,如果这个进程由于某种原因意外提前终止了,比如某个java进程由于内存泄漏导致JVM崩溃,那么该进程中的所有线程也就随之而无法继续运行。
多线程有风险,用之需谨慎!
参考:
《java多线程编程实战指南》黄文海
阅读全文
1 0
- java多线程学习之二——多线程的优势和风险
- 多线程提高系列(1)--线程的优势以及风险性
- java多线程学习之——多线程中几种释放锁和不释放锁的操作
- Java学习笔记之——多线程(二)
- Java多线程和多线程计数器的学习
- java多线程学习(二)——线程的创建
- linux多线程学习(二)—线程的创建和退出
- 多线程学习(二)-线程池和定时器——多线程的自动管理
- 多线程学习(二)-线程池和定时器——多线程的自动管理
- java之学习多线程(二)
- java多线程学习之ReentrantReadWriteLock(二)
- java多线程学习二
- java多线程学习二
- 多线程带来的风险
- 关于Java多线程和并发运行的学习(二)
- Thread多线程学习(二),java多线程中synchronize锁的使用和学习
- Java多线程之二
- 多线程的优势
- php curl ftp 下载文件
- linux windows 路径问题
- python的scikit-learn将特征转成one-hot特征
- 虚幻360全景图
- 值得一看的开发资料
- java多线程学习之二——多线程的优势和风险
- java排序算法整理(二)
- Java 冒泡排序
- DHTML技术---前端用户提交信息验证和表单提交控制+完整表单验证代码实例
- CentOS6安装后问题汇总
- 下一代3d渲染技术,体素光线投射
- 平衡树之treap
- 12条鲜有人知的css事实(续集)
- google IO