我有三星 Galaxy S3,它使用自己的 Exynos 4 Quad 处理器。所以我想优化我的应用程序,它可以使用所有 4 个处理器内核。
所以我做了一些测试:
在一个线程中运行任务。处理时间 - 8 秒。
在四个线程中运行任务。处理时间 - 仍然是 8 秒。
new Thread() { public void run() { // do 1/4 of task } }.start(); new Thread() { public void run() { // do 1/4 of task } }.start(); new Thread() { public void run() { // do 1/4 of task } }.start(); new Thread() { public void run() { // do 1/4 of task } }.start();
在 ExecutorService 中运行任务。和处理时间 - 仍然是 8 秒。
ExecutorService threadPool = null; threadPool = Executors.newFixedThreadPool(4); threadPool.execute(new Runnable() { @Override public void run() { // do 1/4 of task }}); threadPool.execute(new Runnable() { @Override public void run() { // do 1/4 of task }}); threadPool.execute(new Runnable() { @Override public void run() { // do 1/4 of task }}); threadPool.execute(new Runnable() { @Override public void run() { // do 1/4 of task }});
看起来所有工作都是同步完成的。为什么它不并行?