编写一个java线程池
时间: 2023-06-28 10:05:27 浏览: 71
好的,下面是一个简单的Java线程池实现:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MyThreadPool {
private ExecutorService executor;
public MyThreadPool(int nThreads) {
executor = Executors.newFixedThreadPool(nThreads);
}
public void execute(Runnable task) {
executor.execute(task);
}
}
```
这个线程池使用了Java自带的`ExecutorService`和`Executors`类,通过`newFixedThreadPool`方法创建了固定大小的线程池。`execute`方法接受一个`Runnable`类型的任务,并将其提交到线程池中执行。你可以根据需要修改线程池的大小,或者添加其他方法来获取线程池的状态等信息。
相关问题
写一个java线程池工具类
好的,Java线程池是Java提供的一种线程管理机制,通过线程池可以更好地管理系统中的线程。下面我来介绍一下如何编写一个Java线程池工具类。
1. 创建一个ThreadPoolExecutor对象,用于管理线程池。
2. 定义一个任务类,该类实现Runnable接口,并重写run()方法,run()方法中实现具体的任务逻辑。
3. 在工具类中,定义一个execute()方法,用于向线程池提交任务,该方法接收一个Runnable对象作为参数,将该任务提交到线程池中。
4. 定义一个shutdown()方法,用于关闭线程池,该方法调用ThreadPoolExecutor的shutdown()方法即可。
5. 定义一个getActiveCount()方法,用于获取当前活跃的线程数,该方法调用ThreadPoolExecutor的getActiveCount()方法即可。
6. 可以根据需要定义其他方法,如getPoolSize()、getCorePoolSize()等。
下面是一个简单的Java线程池工具类示例:
```
import java.util.concurrent.*;
public class ThreadPoolUtil {
private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60, // 线程空闲时间
TimeUnit.SECONDS, // 线程空闲时间单位
new LinkedBlockingQueue<>(), // 线程池任务队列
Executors.defaultThreadFactory(), // 线程工厂
new ThreadPoolExecutor.AbortPolicy() // 拒绝策略
);
public static void execute(Runnable task) {
threadPool.execute(task);
}
public static void shutdown() {
threadPool.shutdown();
}
public static int getActiveCount() {
return threadPool.getActiveCount();
}
}
```
写一个java线程池的简单应用,主线程需要等待子线程执行完成后输出一句话
可以这样编写:public class SimpleThreadPool {
public static void main(String[] args) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 创建 Runnable 对象任务
Runnable task = () -> {
System.out.println("子线程正在执行……");
};
// 提交任务到线程池
executor.execute(task);
// 关闭线程池
executor.shutdown();
// 等待子线程执行完毕
while (!executor.isTerminated()) {
}
System.out.println("子线程执行完成!");
}
}
阅读全文