更加复杂的设计
虽然多线程的一些部分比单线程的简单,但是其他的部分更加复杂。通过多线程执行的代码访问共享的数据需要特殊的注意。线程交互总是原理简单。来自于不正确的线程同步出现的错误很难去检测,出现以及修复。
上下文切换开销
当一个cpu从一个线程切换到另外一个线程的时候,这个cpu需要保存当前线程的本地数据,程序指针等等信息,以及加载下一个线程的本地数据,程序指针去执行。这个切换称之为“上下文切换”。这个cpu从执行一个线程的上下文切换到执行另外一个线程的上下文。
上下文切换不是低廉的。你不想在线程之间切换超过必须的。
增加资源消耗
一个线程为了运行需要计算机的一些资源。此外cpu的一个线程需要一些内存去保持它的本地堆栈。在操作系统管理线程的内部可能也会占去一些资源。尝试着创建100个线程的程序,除了等什么都不做,然后看着当运行时候会消耗多少内存。
以上就是java 多线程代价的内容。
