如果一个方法内含有一个for循环,测出这个方法执行需要20秒,当有100个客户端同时访问时,方法执行时并行还是串行的。如果是串行的那不是最后一个相应的客户为2000秒? 方法应该是引用变量,那就是说所有用户都同时访问同一个地址的内容? 求解,最好比较详细
2 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
这个问题要这么分析,for 循环执行20秒 时CPU占用率是多少,如果是100%(单CPU环境) ,那么并发时虽然是多线程并行处理,但由于CPU资源有限,并行处理的多个线程并不能得到足够的CPU资源,那么100个客户并发时其响应时间很可能是每个客户都是2000秒(因为是并行)。如果CPU不是100%,那么要具体分析程序的阻塞是怎么造成的,是IO,还是数据库调用还是锁定,网络等等,多线程并发时在这种情况下要考虑的问题更多,比如数据库的锁定问题,内核对象的互锁问题,IO的并行访问问题等等。
动漫人物
TA贡献1815条经验 获得超10个赞
现在的程序,基本上是多线程的了,特别是web,所以你不用担心
所有方法都可以同时访问同一个地址的内容,但是若要修改,请记得加锁,否则你将会有万分之一的几率出错^_^
- 2 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消