为什么象网络蚂蚁这样的多线程程序可以加快下载速度? 现在的下载程序都是多线程的,可以加快下载速度。但是我们用的都是单cpu机子,不明白为什么多线程可以加快下载速度。比如现在有一个任务是往表里加100w条记录,我感觉用1个线程去执行和用5个线程去执行时间是差不多的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多线程不是所有的场合都适合,都能提高效率,如果你的多线程需要去反问同一个资源,而这个资源又属于互斥的共享资源,这时多线程就不能发挥很大作用了,虽然每一个线程都是独立运行,但是在访问互斥资源的时候还是得等待。当然,单CPU的计算机所谓的多线程其实只是一种对CPU资源的分时使用,还算不上真正的多线程。 5个笼头放水不一定比1个笼头放水快,如果总水管的流量是一样的,那速度是一样的。而且我们用的是单cpu,不可能实现真正的并行。那多线程应该在什么情况下使用呢? 多线程在CPU经常闲置的时候能发挥更高的效率。如果CPU处理某个任务是长期都是100%,那再分线程出来都没用。 楼主这个问题问得好呀!确实, CPU如果已经100%了, 那再分线程也没意义! 不过我们平时的CPU大部分时间都是空闲的... 打个比方:一个8车道的路,你用一辆车运东西,这是单线程。如果加7个线程,改成8个车一起运,自然效率更高了。这里有一个重要的问题,就是车道(也就是CPU资源)。如果你运东西的卡车很巨大,以辆就占了8个车道,那再分线程加车也提高不了效率了。 用网络蚂蚁下载,确实不太耗cpu的资源。但是一个简单的while循环,就会使cpu达到100%。不太清楚网络蚂蚁是怎么实现的。 楼主要补一下操作系统的知识cpu是分时间片的 java jTable 单元格操作问题 如何在Listener中使用另外一个类的变量?(绝对菜!) 菜单栏怎么设置热键? 使用JList显示jpcap.loopPacket()结果时的问题 想在面板上显示动态变化的一个字符串,怎样做?(在线等) 求JAVA实例 java多线程问题(wait(time)) 怎么写一个方法能互换2个变量的值 关于垃圾收集的问题,诸位大哥帮帮忙 window.close()怎么才能 不出现那个是否关闭的提示? <jsp:useBean 命令的参数问题 请问在JAVA语言里怎样得到服务器的日期和时间?
那多线程应该在什么情况下使用呢?
如果CPU处理某个任务是长期都是100%,那再分线程出来都没用。
这里有一个重要的问题,就是车道(也就是CPU资源)。如果你运东西的卡车很巨大,以辆就占了8个车道,那再分线程加车也提高不了效率了。
cpu是分时间片的