import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExecutorTest {
public static void main(String[] args) {
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
myTask task = new myTask(i);
fixedThreadPool.submit(task);
}
fixedThreadPool.shutdown();
}
}
class myTask implements Runnable{
public myTask(int index){
this.index=index;
}
private int index;
@Override
public void run() {
try {
System.out.println(index);
if(index==9){
System.out.println("waiting for index 9");
Thread.sleep(10000);
System.out.println("completed for index 9");
}else{
Thread.sleep(2000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
相关推荐
- 与`newFixedThreadPool(1)`不同,`newSingleThreadExecutor()`返回的`ExecutorService`不能重新配置以使用更多线程。 - 在析构函数`finalize()`中会调用`shutdown()`,即使未显式调用`shutdown()`也会确保线程池...
本文介绍了 Java 中的四种线程池模型:`newCachedThreadPool`、`newFixedThreadPool`、`newScheduledThreadPool` 和 `newSingleThreadExecutor`。通过这些线程池的合理使用,可以在不同的应用场景下有效提升程序的...
Java线程池可以分为四种类型:newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool和newScheduledThreadPool。 1. newFixedThreadPool newFixedThreadPool方法返回一个固定线程数量的线程池,该...
Java中的四种预定义线程池分别是`newSingleThreadExecutor`、`newFixedThreadPool`、`newCacheThreadPool`和`newScheduledThreadPool`。这些线程池都是通过`Executors`类提供的工厂方法创建,并且都基于`...
Java的`java.util.concurrent`包提供了四种主要的线程池实现:`Executors.newFixedThreadPool()`, `Executors.newSingleThreadExecutor()`, `Executors.newCachedThreadPool()`以及`Executors.newWorkStealingPool()...
`tcp_thread_java.zip`这个压缩包包含的示例代码展示了如何使用`Executors.newFixedThreadPool`方法创建一个固定大小的线程池来处理TCP连接。 首先,我们来看`TCPServer.java`,这是一个简单的TCP服务器端程序,它...
`newFixedThreadPool`是`java.util.concurrent`包中的一个线程池工厂方法,用于创建固定数量线程的线程池。`FutureTask`则是表示异步计算的结果,它实现了`RunnableFuture`接口,提供了对任务状态的查询和结果获取。...
play使用tabLayout滑动指示器,fragment预加载播放器采用Exoplayer播放 多线程下载的项目,使用线程池(Executors.newFixedThreadPool(2))对线程的管理支持断点续传,第一个版本默认可以两个线程同时下载版本1.1.0...
线程池的创建可以通过`Executors`工厂类完成,如`newFixedThreadPool`,`newCachedThreadPool`,或`newSingleThreadExecutor`等,它们分别对应不同类型的线程池策略。例如,`newFixedThreadPool`创建的线程池大小...
而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池的方法,...
2. newFixedThreadPool(int nThreads, ThreadFactory threadFactory):与newFixedThreadPool(int nThreads)类似,但是可以自定义线程工厂来创建线程。 3. newSingleThreadExecutor():创建只有一个线程的线程池,...
- **定义**:`newFixedThreadPool`是通过`Executors`工具类提供的一个工厂方法,用于创建固定大小的线程池。 - **特点**: - 线程池中的线程数量固定; - 如果线程池中的所有线程都在执行任务,则新提交的任务会被...
在 Java 中,线程池是通过 Executor 框架来实现的, Executor 框架提供了四种线程池的实现:newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool 和 newScheduledThreadPool。 1. ...
ExecutorService threadPool = Executors.newFixedThreadPool(10); for (int i = 0; i ; i++) { int finalI = i; threadPool.execute(new Runnable() { @Override public void run() { synchronized ...
这里通过`Executors.newFixedThreadPool(5)`创建了一个固定大小为5的线程池。这意味着任何时候线程池中最多只能有5个线程同时运行。 ##### 4. 提交任务到线程池 ```java for (int i = 0; i ; i++) { Runnable ...
服务端是接收心跳包,而客户端是发送心跳包,由于客户端只与一个服务端进行通讯(客户端之间的通讯也是由服务端进行分发的),所以这里只使用了一个大小为2的线程池去处理这两件事(newFixedThreadPool(2)),对应的...
在上述代码示例中,我们看到创建了一个固定大小的线程池`ExecutorService pool = Executors.newFixedThreadPool(2);`,这意味着线程池内最多同时存在两个工作线程。线程池的创建使用了`Executors`类的静态工厂方法`...
- **newFixedThreadPool** 示例中,由于线程池大小为 3,当提交任务的速度快于执行速度,未执行的任务会在队列中等待,保证并发线程数不超过设定值。 - **newScheduledThreadPool** 示例展示了延迟执行任务的能力...
1. **固定大小线程池** (`Executors.newFixedThreadPool(int nThreads)`): 这种线程池的核心线程数和最大线程数相同,均为`nThreads`。当线程池满时,新提交的任务会在队列中等待,直到有线程空闲出来。适合处理...
* newSingleThreadExecutor():创建一个只有单线程的线程池,它相当于调用newFixedThreadPool()方法时传入参数为1。 * newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以在指定延迟后...