Java多线程:
可以通过new Thread(runnable).start()开启子线程,但是实际应用中这种开启多线程的方法在线程数非常多的情况下不一定能实现期望的功能,主要是在重复创建和销毁线程时消耗了大量的资源,导致多线程的效率反而没有单线程效率高。
通过线程池Executors.newFixedThreadPool()对创建的线程进行复用,减少了资源的消耗。
ExecutorService executorService = Executors.newFixedThreadPool(5);//创建线程池
for (int i = 0; i < 100; i++) {
Runnable runnable = new Runnable() {
@Override
public void run() {
Log.d("MainActivity", Thread.currentThread().getName());
}
};
executorService.execute(runnable);//将任务添加到线程池中
}
通过new ThreadPoolExecutor()创建线程池
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 5, 1,
TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>());
ThreadLocal<LocalVariable> threadLocal = new ThreadLocal<>();
for (int i = 0; i < 100; i++) {
threadPoolExecutor.execute(new Runnable() {
@Override
public void run() {
threadLocal.set(new LocalVariable());
Log.d("MainActivity", Thread.currentThread().getName());
threadLocal.remove();
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
只是作为记录,没有实际项目中使用