猿问

程序性能问题

如果一个方法内含有一个for循环,测出这个方法执行需要20秒,当有100个客户端同时访问时,方法执行时并行还是串行的。如果是串行的那不是最后一个相应的客户为2000秒? 
   方法应该是引用变量,那就是说所有用户都同时访问同一个地址的内容? 
   求解,最好比较详细

潇潇雨雨
浏览 262回答 2
2回答

子衿沉夜

这个问题要这么分析,for 循环执行20秒 时CPU占用率是多少,如果是100%(单CPU环境) ,那么并发时虽然是多线程并行处理,但由于CPU资源有限,并行处理的多个线程并不能得到足够的CPU资源,那么100个客户并发时其响应时间很可能是每个客户都是2000秒(因为是并行)。如果CPU不是100%,那么要具体分析程序的阻塞是怎么造成的,是IO,还是数据库调用还是锁定,网络等等,多线程并发时在这种情况下要考虑的问题更多,比如数据库的锁定问题,内核对象的互锁问题,IO的并行访问问题等等。

动漫人物

现在的程序,基本上是多线程的了,特别是web,所以你不用担心 所有方法都可以同时访问同一个地址的内容,但是若要修改,请记得加锁,否则你将会有万分之一的几率出错^_^
随时随地看视频慕课网APP
我要回答