摘要:
性能的思考 与单线程相比,使用多线程总会引入一些性能的开销,这些开销包括:与协调线程相关的开销(加锁、信号、内存同步),增加上下文的切换,线程的创建和消亡。 我们希望CPU做有用的事情,单线程程序即不存在调度问题,也不存在同步开销,不需要使用锁来保证数据结构的一致性。调度和线程内部的协调都要付出性能的开销; 如果可运行的线程的数目大于CPU的数量,那么OD最终会强行换出正在执行的线程,从而使其他线程能够使用CPU。这会引起上下文切换,他会保存当前运行线程的上下文,并重新调入线程的执行上下文。 切换上下文是要付出代价的;线程的调度需要操控OS和JVM中共享的数据结构;当一个新的线程呗换入... 阅读全文