高并发和多线程有什么关系吗?访问量一多是不是必须要有多线程来实现?
6条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
snailplus 2015-09-21 17:57最佳回答 专家已采纳高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。
举个极端的例子,就是100个人,1人分配1台web服务器,
那么服务器资源是他们独占的,他们不需要抢占服务器资源,100个请求被100台服务器并行处理,速度必定很快,这就是高并发。
当然这是不可能的,但是,我们总是努力去做,让少量的服务器也能达到近似的能力。
这就需要服务器的HTML画面,后台业务逻辑,db数据存取等等细节上的处理都达到一个并行的极致,
以此来实现整个服务器对所有请求的高并行。这是战略上的并行。多线程只是为了达到高并发目的,在某个细节点上,为实现某并发功能而采用的一种具体的实现方法,这种功能也可以由多进程实现,
当然,也可以由多进程,多线程一起实现。这是战术上的并行。那么可以说,高并发是目的,多线程是某种手段(不是唯一的),高并发可以由多线程实现,但是多线程不代表就是高并发。
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(5条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2015-09-21 11:26回答 6 已采纳 高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。 举个极端的例子,就是100个人,1人分配1台web服务器, 那么服务器资源是他们独占的,他们不需要抢占服务器
- 2017-07-21 03:09回答 2 已采纳 建议在去获取序列号的时候加个锁
- 2017-10-15 08:04回答 7 已采纳 用一个任务队列保存所有任务,那么无论哪个线程拿到任务后将任务弹出队列,其他线程也就不会拿到重复任务,而且不需要去查询与修改状态。这样的同步队列可以自己去实现,也可以直接使用Concurrent包中提供
- 2019-11-12 11:29回答 2 已采纳 高并发只是增加了并行操作的可能性而已; 但是: 1.你不能保证你得方法是被同一个线程调用 2.你不能保证你的应用只部署一台机器 3.如果抢红包这个不用多线程,用户量一多,你的系统就挂了
- 2015-03-13 12:47回答 5 已采纳 比如说,你用多线程并行对一个数组进行累加。你用第一个线程处理前50%,另一个线程处理后50%,最后你需要汇总两个线程的结果,因为种种原因,两个线程肯定不会同时结束。 那么就需要等待全部线程结束,这个
- 2019-08-27 11:52回答 2 已采纳 像数据库操作这种重io的,并且数据库本身已经优化的,再多线程就没有办法加速了,甚至更慢。 好比你同时复制两个文件,肯定比一个一个复制更慢。
- 2022-03-10 08:58回答 3 已采纳 volatile只能保证内存变化的可见性,不能保证操作的原子性。你的setaaa()方法里执行了a+=1,分析一下这一步实际执行的操作: 将a原有的值从内存载入到操作数栈对操作数栈中的值进行加一将操作
- 2019-07-21 20:37回答 1 已采纳 是这样的,这里涉及到 JVM 的内存模型的 Happens-Before 的规则。 第一种直接打印 count 的做法,写入完成后,可能这个写入的值不会立即被其他线程看到,所以打印的重复了。 可以
- 2016-09-01 12:54回答 2 已采纳 netty估计比较适合你
- 2018-12-06 08:37回答 2 已采纳 多线程的时候synchronized锁同一个对象才有用,你的代码里每次同步的都是新的对象,所以同步无效
- 没有解决我的问题, 去提问