/*NewThread类*/
package ThreadPool;
public class NewThread implements Runnable {
@Override
public void run() {
int x = 0;
while (x < 100) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
x++;
}
System.out.println(Thread.currentThread().getName() + ":" + x);
}
}
/*Main方法*/
package ThreadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();
ExecutorService pool = Executors.newFixedThreadPool(1000);// 新起一个1000个线程的线程池
for (int x = 0; x < 800; x++) {// 给这个线程池指定80个进程
pool.execute(new Thread(new NewThread()));
}
/*
* shutDown() 当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则
* 将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出, 直到添加到线程池中的任务都已经
* 处理完成,才会退出。
*/
pool.shutdown();
try {
/*
* 等待10秒当线程池的工作队列中的所有任务执行完 毕,就返回true,如果10秒后还没完,则false,下面的
* 代码是相当于超时了,执行强制关闭
*/
boolean notTimeOut = pool.awaitTermination(10, TimeUnit.SECONDS);
System.out.println(System.currentTimeMillis() - start);// 运行至此
if (!notTimeOut) {
System.out.println("TimeOut!!");
/*
* shutdownNow() 根据JDK文档描述,大致意思是:执行该方法,线程池的状态立刻变成STOP状态,
* 并试图停止所有正在执行的线程,不再处理还在池队列中等待的任务,当然,它会返回那些未执行的 任务。
*/
pool.shutdownNow();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(System.currentTimeMillis() - start);// 所有线程结束
}
}
分享到:
相关推荐
线程池里的线程等待等待队列里的线程执行,等待队列里的等待线程池里的完成,相互等待
Java线程池是一种高效管理线程资源的技术,它允许开发者创建一组可重用的工作线程,从而避免频繁地创建和销毁线程带来的性能开销。线程池在Java中主要通过`java.util.concurrent`包中的`ExecutorService`接口及其...
Java线程池是一种高效管理线程的技术,它可以帮助开发者更好地控制并发执行的线程数量,避免资源浪费,提高系统性能。在Java中,线程池是通过`java.util.concurrent`包中的`ExecutorService`接口及其实现类来实现的...
Java线程池与反射机制是Java编程中两个重要的概念,它们在实际开发中扮演着至关重要的角色。线程池能够有效地管理和控制并发执行的任务,而反射机制则允许我们在运行时动态地访问和修改类的信息。 首先,让我们深入...
表9-1展示了这种测试的一个例子,随着线程数增加,执行时间显著减少,但增加到一定程度后,收益逐渐减小。 总结来说,理解并正确使用Java线程池和ThreadPoolExecutor对于优化Java应用程序的并发性能至关重要。通过...
并行流Parallel Stream我们先以一个简单的例子来开始-在任一个Collection类型上调用parallelStream方法-它将返回一个可能的并行流。这种流的默认处理流程是使用ForkJoinPool.commonPool(),这是一个被整个应用程序所...
Java 线程池例子 ThreadPoolExecutor Java 中的线程池是指一个容器,里面包含了多个线程,这些线程可以重复使用,以避免频繁创建和销毁线程的开销。ThreadPoolExecutor 是 Java 中一个非常重要的线程池实现类,它...
下面通过一个简化的示例来理解Java线程池的构建过程: ```java // 线程池管理器类 class ThreadPoolManager { private ExecutorService executor; public ThreadPoolManager(int threadCount) { this.executor ...
Java线程池的核心类是`java.util.concurrent.ExecutorService`,它是一个接口,提供了管理和执行任务的能力。在Java 1.5以后,Java内建支持线程池,通过`java.util.concurrent`包中的`Executors`工厂类可以方便地...
是一个java在进行socket编程时,关于线程池的介绍,有代码和例子
corePoolSize:核心池的大小,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; ...
线程池是Java多线程编程中的一个重要概念,它是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池可以有效地控制运行的线程数量,当线程空闲时,会进行回收,这样可以减少...
请最好使用MyEclipse导入工程,或者直接把src中的java文件拷贝到其他工程也可以使用,对想理解线程池概念的同学有很好的帮助
java代码 ThreadPoolExecutor线程池并发测试例子如有误欢迎指正
线程池是多线程编程中的一个重要概念,它在Windows操作系统以及其他支持多线程操作系统的环境中广泛应用。线程池是一种管理线程资源的有效方式,通过预先创建并维护一定数量的线程来处理任务,而不是每次需要执行新...
本资料提供了一个线程池的封装类,以及相关的例子程序,对于理解和实践线程池的使用具有很高的参考价值。 首先,让我们了解一下线程池的基本原理。线程池预先创建了一组线程,当需要执行新任务时,而不是每次创建新...
总结来说,"火山安卓编程线程池例子"是一个关于Android应用开发中利用火山编程框架进行多线程管理和优化的实践案例。通过对这个例子的学习,开发者能够深入理解线程池的工作原理和优势,提升其在Android并发编程中的...
线程池示例(包含自定义拒绝策略),演示了如何创建一个线程池,以及添加到队列的过程,先添加到工作线程,然后是缓存队列,最后是创建临时线程
在Android开发中,Java线程池是一个至关重要的概念,它能有效地管理多个并发任务,提高应用性能并降低资源消耗。线程池通过复用已创建的线程来避免频繁创建和销毁线程带来的开销,从而提升系统效率。在本教程中,...
java 线程池 实现 例子,线程池实例