多线程使用场景
来源:互联网 发布:java实现des加密解密 编辑:程序博客网 时间:2024/05/21 14:45
最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程序,比如doGet或者doPost方法。
如果不采用多线程机制,上百个人同时访问一个web应用的时候,tomcat就得排队串行处理了,那样客户端根本是无法忍受那种访问速度的。
还有就是需要异步处理的时候,需要使用多线程。比如task a和task b要并行处理,单个线程只能串行处理,先做完task a然后再做task b。如果想要多个task同时执行的话,就必须为每个task分配一个线程,然后通过java虚拟机的线程调度,来同时执行多个任务。比如你的CPU是多核心的话,就可以让一个CPU执行一个线程。如果只有一个CPU的话,底层是按照分时复用的原则,各个线程按照时间片来获得CPU资源。
----------------------------------------------------------------------------------------------------------------------------------------------------------
你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!
一般在网络应用程序中使用多线程的地方非常多!
另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,根本不可能靠多线程提高效率!
一般来说,磁盘 IO 的并发能力为 0,也就是说无法支持并发!网络 IO 的话由于带宽的限制的,使用多线程处理最多也只能达到带宽的极值。
对于磁盘 IO 来说,多线程可以用于一个线程专门用于读写文件,其他的线程用于对读取数据进行处理,这样才有可能更好地利用 CPU 资源。
如果仅仅是单纯的文件复制,使用多线程操作的话,会使用磁头在磁盘上不停地进行寻道操作,使得效率更为低下!
-----------------------------------------------------------------------------------------------------------------------------------------------------------
1。压力测试时,会用到多线程。
2。服务器编程时,会用到多线程。
3。使用监听器时,可能会用到多线程。
4。跑JOB时,可能会用到多线程。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
学习了,还有一种极为普遍的使用多线程的场景是UI编程,一般UI界面绘制于主线程,为了不阻塞主线程让用户体验更流畅,需要创建单独的线程处理耗时操作,处理完了再更新主界面,典型的案例就是android应用开发
-----------------------------------------------------------------------------------------------------------------------------------------------------------
一些C/S模式比如说网络游戏(基于socket协议)一般在服务器那边处理的时候一个客户端,一个线程;还有就是一些银行软件,用到了线程同步等等
-----------------------------------------------------------------------------------------------------------------------------------------------------------
- 多线程使用场景
- Java多线程使用场景
- iOS中的多线程一般使用场景
- 多线程的作用和使用场景
- 多线程/多进程的使用场景-Android
- 再谈Python多线程--正确的使用场景
- [场景] -- 场景使用
- 多线程的应用场景
- 多线程的应用场景
- 多线程应用场景
- Java多线程应用场景
- 多线程的应用场景
- Java多线程 应用场景
- 多线程的应用场景
- 多线程应用场景
- 多线程的一种场景
- 多线程的运用场景
- 多线程的应用场景
- Wordpress如何正确书写Robots.txt
- JS基本数据类型和复杂类型的区别
- (8.1.5.1)Android Testing Support Library翻译之Espresso 概览
- 遇到的前端兼容性问题
- CSS 让背景图片全部显示,填满父div
- 多线程使用场景
- 简单方法解决八皇后问题
- 关于java RMI框架(远程方法调用)的简单介绍
- 134.ListView中下面添加layout_weight按钮渲染的方法
- CentOS 下使用安装 python 包管理工具 pip
- (8.1.5.2)Android Testing Support Library翻译之Espresso 设置说明
- Mybatis学习系列——延迟加载
- Oracle笔记6
- 图的操作