多线程--何时用到多线程
来源:互联网 发布:刘建明 知乎 编辑:程序博客网 时间:2024/06/05 17:34
何时使用多线程技术,何时避免用它,是我们需要掌握的重要课题。多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。
多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立的任务,因此可以在以下方面显著提高性能:
(1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;
(2)当前没有进行处理的任务时可以将处理器时间让给其它任务;
(3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;
(4)可以随时停止任务;
(5)可以分别设置各个任务的优先级以优化性能。
是否需要创建多个线程取决于各种因素。在以下情况下,最适合采用多线程处理:
(1)耗时或大量占用处理器的任务阻塞用户界面操作;
(2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
同样的 ,多线程也存在许多缺点 ,在考虑多线程时需要进行充分的考虑。多线程的主要缺点包括:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
(4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序员无法预知的。
--------------------------------
1、如果程序中需要硬件IO操作,比如串口读写、Socket通讯等,这时,用后台线程或线程池的方式,可以程序避免长时间的等待比较慢速的IO操作;
2、如果程序中有较多的并发任务,例如,正在大量读取数据库以生成报表时,还需要实时接收告警数据,这时需要将大任务用线程在后台实现;
还有挺多情况,不一一列举了
如果说我们做一个实时通讯的工具,界面是一个线程,一直都必须运行,不能被占用(比如说通讯的线程),被占用的话就会出现界面停滞或者卡死现象,
这个时候而通讯线程需要时刻监视和处理来往通讯的信息,也是需要时刻运行的,这两个线程都必须是时刻运行的,所以你现在明白了,这了就需要多线程了对不?
(1)耗时或大量占用处理器的任务阻塞用户界面操作;
(2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
- 多线程--何时用到多线程
- 多线程——何时建立多线程
- 如何和何时使用多线程
- 多线程程序何时需要加锁
- 多线程的作用以及什么地方用到多线程?
- 多线程用到的概念知识点
- 多线程用到类函数中
- 多线程编程:何时使用同步类
- 多线程编程:何时使用同步类
- 多线程处理:何时使用同步类
- 多线程编程:何时使用同步类
- 多线程编程:何时使用同步类
- 多线程处理:何时使用同步类
- 总结-Java何时需要使用多线程
- 总结-Java何时需要使用多线程
- 简述多线程的作用以及什么地方用到多线程
- 多线程必须用到的线程池(什么时候用多线程)
- 用到多线程的简单socket通信
- 通俗易懂讲解happens-before原则
- HTTP/TCP/UDP协议详解
- iOS 多线程介绍
- 确认网络环境
- ORB特征点检测
- 多线程--何时用到多线程
- C# Chart 控件快速使用
- Redis BRPOP key [key ...] timeout
- 812 水题~~【进制转化】
- 两种删除旧内核的方法
- OpenLDAP学习笔记
- 自适应页面布局使得应用适应不同屏幕的尺寸变得更加容易
- SNART方法
- hdu2089数位dp