jdk1.5的threadpoolexecutor ,要在任务全部处理完后在接着做别的事情,这就涉及同步的做法了,有2种办法:
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 20,0, TimeUnit.SECONDS, new ArrayBlockingQueue(10),
new ThreadPoolExecutor.DiscardOldestPolicy());
for (int i = 0; i < 10; i++) {
executor.submit(new ThdRun(i));
}
executor.shutdown();
try {
executor.awaitTermination(100, TimeUnit.DAYS);
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("finish!");
输出结果为:
0
1
2
3
5
6
7
8
9
4
finish!
还一种做法就是:
ExecutorService executor = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
executor.submit(new ThdRun(i));
}
executor.shutdown();
try {
executor.awaitTermination(100, TimeUnit.DAYS);
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("finish!");
也能达到同样的效果.
不过这两种方法还是的不同,如果run方法里面耗时长的(比如io)话。方法一任务就没有全部处理完,比如我拷贝50个文件,结果直拷贝了30几个,但是我用了个耗时长的while循环很正常怪呀,不知道是什么原因,怪。
分享到:
相关推荐
C# 多线程 线程池 线程同步 单线程 线程的开始、挂起、恢复、结束、同步和异步
1.资源简介:PyQt5中使用多线程模块QThread解决了PyQt5界面程序执行比较耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题,采用线程池ThreadPoolExecutor解决了ping多个IP多任务耗时问题。...
1. SyncTaskExecutor:同步可以用SyncTaskExecutor,但这个可以说不算一个线程池,因为还在原线程执行。这个类没有实现异步调用,只是一个同步操作。 2.也可以用ThreadPoolTaskExecutor结合FutureTask做到同步。 3.2...
线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池线程池...
阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池阻塞线程池...
C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池相关资料C#线程同步及线程池...
springmvc+spring线程池处理http并发请求数据同步控制问题
同学们有需要了解线程同步问题的请下载,这是个小例子,希望对亲们有帮助。
用线程池解决服务器并发请求的方案设计
VC实现线程池
2、线程池则完美的解决了这个问题,线程池的原理就是事先申请好指定数量的线程所使用的资源,而且这些资源是不断的重复利用的!可利用任务管理器看到程序的线程数量的变化(在使用普通的多线程时:线程数会根据软件...
简单的线程池程序+中文文档 包结构: com.tangkai.threadpool --SimpleThread.java 工作线程 --TestThreadPool.java 程序入口 --ThreadPoolManager.java 线程池管理类
线程池主要用来解决线程生命周期开销问题和资源不足问题(这段是摘自网络) 2:如何创建一个线程池: 复制代码 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...
"ThreadLocal垮线程池传递数据解决方案" ThreadLocal 是Java语言中的一种机制,旨在提供线程内数据的传递解决方案。然而,在实际生产中,线程一般不可能孤立的独立去运行,而是交给线程池去调度处理。这时,...
"Java 线程池完整代码解析" Java 线程池是 Java 语言中的一个重要概念,它允许开发者创建和管理多个线程,以提高程序的并发性和性能。下面是对给定文件的解析,包括 title、description、标签和部分内容的解析。 ...
Java 实现通用线程池 Java 实现通用线程池是指使用 Java 语言编写一个通用的线程池,线程池通俗的描述就是预先创建若干空闲线程,等到需要用多线程去处理事务的时候去唤醒某些空闲线程执行处理任务,这样就省去了...
史上最强多线程面试44题和答案:线程锁+线程池+线程同步等
参考了ACE线程池机制实现的线程池,封装了工作者类CWorker,任务类CTask,线程调度类CManager,线程池类CThreadPool
线程池
【多线程 线程池 线程同步--DEMO】 软件平台:Visual Studio 2008 开发语言:C# 引用系统类:System.Threading System.Threading.ThreadPool 模拟多线程以及线程池的使用,对概念理解很有帮助的。