c++线程池实现与demo
时间: 2023-07-30 07:03:07 浏览: 105
线程池是一种用来管理和复用线程的机制,它可以创建一组线程并维护它们的运行状态,从而避免了频繁创建和销毁线程的开销。在Java中,可以使用ThreadPoolExecutor类来实现线程池。
要实现一个线程池,首先需要创建一个ThreadPoolExecutor对象,并设置相关参数,例如线程池的大小、任务队列的容量等。然后,可以通过execute方法向线程池提交任务。
下面是一个简单的线程池示例:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolDemo {
public static void main(String[] args) {
// 创建一个固定大小为5的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交10个任务给线程池
for (int i = 0; i < 10; i++) {
final int index = i;
executor.execute(new Runnable() {
@Override
public void run() {
System.out.println("任务" + index + "正在执行,线程名为:" + Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务" + index + "执行完毕");
}
});
}
// 关闭线程池
executor.shutdown();
}
}
```
上述代码中,通过Executors的静态工厂方法newFixedThreadPool创建了一个固定大小为5的线程池。然后,使用execute方法向线程池提交了10个任务,并在任务执行前后打印相关信息。最后,使用shutdown方法来关闭线程池。
线程池的好处是可以有效地管理线程,提高系统性能和资源利用率。它可以根据系统的负载情况自动调整线程数量,避免了频繁创建和销毁线程的开销。此外,线程池还可以实现线程的复用和任务的排队,实现更加灵活和高效的线程管理。
阅读全文