Java中应用多线程的场景?
最典型的应用比如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中应用多线程的场景?的更多相关文章
- Java中的多线程=你只要看这一篇就够了
		如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ... 
- Java中的多线程技术全面详解
		本文主要从整体上介绍Java中的多线程技术,对于一些重要的基础概念会进行相对详细的介绍,若有叙述不清晰或是不正确的地方,希望大家指出,谢谢大家:) 为什么使用多线程 并发与并行 我们知道,在单核机器上 ... 
- Java 中传统多线程
		目录 Java 中传统多线程 线程初识 线程的概念 实现线程 线程的生命周期 常用API 线程同步 多线程共享数据的问题 线程同步及实现机制 线程间通讯 线程间通讯模型 线程中通讯的实现 @(目录) ... 
- Java中使用多线程、curl及代理IP模拟post提交和get访问
		Java中使用多线程.curl及代理IP模拟post提交和get访问 菜鸟,多线程好玩就写着玩,大神可以路过指教,小弟在这受教,谢谢! 更多分享请关注微信公众号:lvxing1788 ~~~~~~ 分 ... 
- 【转】Java中的多线程学习大总结
		多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程 ... 
- Java中的 多线程编程
		Java 中的多线程编程 一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序 ... 
- java中的多线程   //  基础
		java 中的多线程 简介 进程 : 指正在运行的程序,并具有一定的独立能力,即 当硬盘中的程序进入到内存中运行时,就变成了一个进程 线程 : 是进程中的一个执行单元,负责当前程序的执行.线程就是CP ... 
- Android学习记录(5)—在java中学习多线程下载之断点续传②
		在上一节中我们学习了在java中学习多线程下载的基本原理和基本用法,我们并没有讲多线程的断点续传,那么这一节我们就接着上一节来讲断点续传,断点续传的重要性不言而喻,可以不用重复下载,也可以节省时间,实 ... 
- Java中使用多线程、curl及代理IP模拟post提交和get訪问
		Java中使用多线程.curl及代理IP模拟post提交和get訪问 菜鸟,多线程好玩就写着玩.大神能够路过不吝赐教.小弟在这受教.谢谢! 很多其它分享请关注微信公众号:lvxing1788 ~~~~ ... 
随机推荐
- BZOJ3456 城市规划  【多项式求逆】
			题目链接 BZOJ3456 题解 之前我们用分治\(ntt\)在\(O(nlog^2n)\)的复杂度下做了这题,今天我们使用多项式求逆 设\(f_n\)表示\(n\)个点带标号无向连通图数 设\(g_ ... 
- 洛谷 P3203 [HNOI2010]弹飞绵羊 解题报告
			P3203 [HNOI2010]弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一 ... 
- UVA 11995 STL 使用
			There is a bag-like data structure, supporting two operations: 1 x Throw an element x into the bag. ... 
- POJ2559 Largest Rectangle in a Histogram (单调栈
			Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26012 ... 
- codeforces 719C. Efim and Strange Grade
			C. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input sta ... 
- shell正则表达式(1)
			一.什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 二.grep 1.参数 -n :显示行号 -o : ... 
- 【mysql】索引与排序、重复索引、冗余索引
			索引与排序 排序可能发生2种情况: 1: 对于覆盖索引,直接在索引上查询时,就是有顺序的, using index 2: 先取出数据,形成临时表做filesort(文件排序,但文件可能在磁盘上,也可能 ... 
- Linux服务器中毒事件(libudev.so)
			今天机房管理人员反馈公司的某台服务器在防火墙上的连接数超限,登陆服务器时发现非常卡顿,远程登录后查看,CPU持续100%,且有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串 ... 
- kvm源代码分析
			vmx是x86硬件虚拟化层,从代码看,qemu用户态是一层,kernel中KVM通用代码是一层,类似kvm_x86_ops是一层,针对各个不同的硬件架构,而vcpu_vmx则是具体架构的虚拟化方案一层 ... 
- CentOS下使用Iptraf进行网络流量的分析笔记
			CentOS下使用Iptraf进行网络流量的分析笔记 一.概述 Iptraf是一款linux环境下,监控网络流量的一款绝佳的免费小软件. 本博客其他随笔参考: Centos安装流量监控工具iftop笔 ... 
