java语言写一个线程池,核心线程为4,最大线程100。和取线程使用的方法
时间: 2024-05-16 08:15:07 浏览: 88
好的,下面是一个简单的 Java 线程池:
```java
import java.util.concurrent.*;
public class MyThreadPool {
private static final int CORE_POOL_SIZE = 4;
private static final int MAXIMUM_POOL_SIZE = 100;
private static final int KEEP_ALIVE_TIME = 60;
private static ExecutorService threadPool = new ThreadPoolExecutor(
CORE_POOL_SIZE,
MAXIMUM_POOL_SIZE,
KEEP_ALIVE_TIME,
TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>()
);
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int taskNumber = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println("Task " + taskNumber + " is running.");
}
});
}
threadPool.shutdown();
}
}
```
这个线程池的核心线程数量为 4,最大线程数量为 100,空闲线程存活时间为 60 秒。任务队列使用的是一个无界队列,因此任务可以无限制添加。
在 `main` 方法中,我们向线程池提交了 10 个任务,线程池会自动调度线程来执行这些任务。最后,我们调用 `shutdown` 方法来关闭线程池。
如果你想手动取出线程使用,可以使用 `submit` 方法,示例如下:
```java
Future<String> future = threadPool.submit(new Callable<String>() {
@Override
public String call() throws Exception {
return "Hello, world!";
}
});
String result = future.get(); // 等待任务执行完毕并获取结果
System.out.println(result);
```
这里我们使用了 `submit` 方法来提交一个 `Callable` 任务,这个任务会返回一个字符串。`submit` 方法会返回一个 `Future` 对象,我们可以用它来获取任务的执行结果。在这里,我们调用了 `future.get()` 方法来等待任务执行完毕并获取结果。
阅读全文