1.SecondThreadStart比singleThreadStart花费更多的时间,这是因为创建线程的代价吗?
当然,创建线程会产生开销。
2.尽管创建线程的成本很高,但是cpu数是4,所以使用大于4的线程数会比使用四个线程慢吗?
如果线程完成得非常快(没有IO绑定和CPU绑定),那么即使线程数大于CPU内核数,您也可以获得良好的结果。
3.如果我想做一些事情要花很多时间,最好用四个线程来做?
您可以使用高级Java并发类(共个
newWorkStealingPool,共个
Executors)
一般来说:
多线程可以通过使用更多的CPU功能来提高应用程序的吞吐量。
这取决于很多因素。
- 线程数
- CPU核心
- 线程创建成本和上下文切换(可能对多线程不利)
- 数据结构
- 数据的可变性(可能对多线程不利)
- 数据结构的共享访问/并发(可能对多线程不利)
- 应用程序类型:CPU绑定或IO绑定
如果您的应用程序是多线程的,将提供出色的结果
更少的CPU绑定,更少的IO绑定(但是对于这些应用程序仍然可以使用多线程)
没有共享数据
如果不是,则性能取决于上述因素,并且单线程应用程序和多线程应用程序之间的吞吐量会有所不同。



