就性能方面我认为是 无阻塞(包括IO阻塞,同步阻塞等)就不要用多线程,不然比单线程还慢。
关于单核和多核的考虑 有些人可能认为 多核的情况下多线程能提高性能
但单线程在多核下就是用的单CPU吗?答案是非也,自己写个单线程在多核下运行试试就知道了欢迎大家讨论
关于单核和多核的考虑 有些人可能认为 多核的情况下多线程能提高性能
但单线程在多核下就是用的单CPU吗?答案是非也,自己写个单线程在多核下运行试试就知道了欢迎大家讨论
解决方案 »
- 如何用java发送post请求,重要的是将textarea中的内容也发送过去?请教高手![
- RandomAccessFile中的readUTF()报异常
- gif89.jar谁有啊给一个 !
- 怎么把一个4位的字节码转换成long类型?
- 急!!!我通过存储过程给java程序返回一个sysdate的时间,可是再我的java程序中得不到小时和分钟,总是零
- java 网络编程 面对重定向怎么保留session??
- weblogic 中.class 文件放那?
- 怎样获得本地的子网掩码、DNS和网卡信息?
- JB7做出来的本地可执行文件竟然要依靠jb路径下的jre/hotspot/*???
- 谁知道国内那有borland的appserver下载(国外的去不了)
- JEditorPan不可编辑的疑难问题
- 这个程序怎么改才能正常运行
个人意见 绿绦工作室
说白了,说到底,是为了简化编程模型。
楼主啊,只要涉及I/O基本上就存在阻塞,因为还没有哪个I/O的速度能够比上CPU。
所以,从CPU的角度来看,除了寄存器,其它的都是I/O,都是外设,
内存都不能例外。所以老紫竹说的很对,在不讨论任何阻塞的情况下,讨论这个问题意义不大。楼主啊,你再说说你讨论这个问题的意义吧,
因为如果不考虑阻塞的话,可能真的只剩下数数这件事儿可作了。
IO操作一定阻塞的观点,我不赞同
IO确实比CPU慢很多,但只是从相同的处理量来说
如果IO只是读一条数据,而CPU需要复杂的元素按操作这种情况呢。
(考虑问题要全面,刘易斯跑百米是比我快,但他跑1000米,我跑100米呢,谁先到终点?)所谓阻塞,我的理解就是供不应求。
再例如CPU运算做生产者,IO操作作消费者的情况,这样也可能不会阻塞。
阻塞就是因为速度不匹配引起的,涉及到I/O,必定有阻塞,这基本上是毫无疑问的,
除非有一种I/O能够和计算机的总线速度完全匹配。你说“再例如CPU运算做生产者,IO操作作消费者的情况,这样也可能不会阻塞。 ”,
怎么可能,CPU每秒产生1000M数据,I/O怎么消费,怎么可能不阻塞,
只是这里阻塞的不是I/O,是把CPU阻塞了,
而这时候不用多线程,那么CPU的计算能力就白费了,只能屈尊到I/O的速度。而另一方面,
无论CPU做多么复杂的处理动作,处理完以后,你必定要去I/O读取下一个数据,或者通过I/O存数据,
在这一刻,无论读/存数据花10MS还是1MS,
总之,这时候,CPU就是在等待,这就是阻塞。怎么才能不阻塞呢?
那就是在CPU还正在处理的时候,就把数据读出来,
ok,这时候,其实就是多线程了,一个线程在运算,另一个线程在读数据。