Nac*_*ate 5 java performance multithreading
我有一个代码块
for (i=0;i<size;i++)
{
do job;
}
Run Code Online (Sandbox Code Playgroud)
最初这个作业任务是按顺序执行的(如上所示),但后来我用普通线程(内部可运行的类实现)制作了多线程,比如
for (i=0;i<size;i++)
{
new threadingclass(some args)
}
runnable threadingclass {
pub void run () {
do job;
}
}
Run Code Online (Sandbox Code Playgroud)
这个工作正常,有一些线程限制(直到系统资源足够)所以为了避免资源重载,我用标准的theadpool实现(线程池,执行器服务和工作线程实现)实现了相同的代码
threadexecutor t=new threadexecutor(size)
for (i=0 ; i<size ; i++)
{
t.execute(new threadingclass(some args))
}
runnable threadingclass {
pub void run () {
do job;
}
}
Run Code Online (Sandbox Code Playgroud)
现在的情况就像,
我想循环运行25次(没有线程),我尝试了所有3个实现
我有点困惑为什么正常的线程和thredpool实现时序差异太大,内部也是线程池不涉及太复杂的逻辑.任何帮助表示赞赏.
提前致谢
您的处理器很可能只有 4 或 8 个核心。之后的每个线程实际上都会减慢系统速度,因为它必须不断中断正在运行的线程,以便给下一个线程一些时间。
运行具有 4 个线程的线程池和具有 4 个线程的手动线程,您会发现性能差异很小。
ThreadPool大小可以配置,您生成的线程数也可以配置...将它们设置为相同的数字以进行有效的测试。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |