使用Threads改进速度应用程序 - Java

时间:2015-04-13 01:11:09

标签: java multithreading performance memory

这是一个概念问题:

我不知道在哪里提出我的问题,抱歉(如果我的问题是偏离主题的话),请告诉我在哪里需要提出这个问题。

使用单线程应用程序,我只使用一次,只使用部分内存,但使用多线程(将我的单个应用程序转换为多线程)我可以提高速度(操作系统为我的应用程序提供更多时间,如果我有n个线程)?

此速度与线程数有关,

假设我的操作系统正在使用50个线程(多个任务或服务),我的应用程序只获得(1/50)部分CPU,但如果我的应用程序有10个线程,那么我的速度是(10/60)部分CPU ...这个假设假设所有线程都具有相同的优先级......

显然这种“改善”不是线性的,这意味着速度将小于(10/60)。

你的概念是什么?

1 个答案:

答案 0 :(得分:0)

拥有更多线程并不能为您提供更多CPU。单线程应用程序仍然可以达到100%的单核心利用率。优先级与您获得的线程数相比要多得多。

线程是将独立计算与独立计算分开,以便可以同时进行多次计算,从而实现并行计算。

线程也很有用,因为它们允许计算继续,而其他计算正在等待文件I / O等较慢的进程。

如果您的应用程序可以利用这些,那么如果多线程可能会执行得更快。但是,一个好的测试值得一千个专家意见。

请记住,确保多线程应用程序正确并非易事。