文档章节

多线程EXecutor 柜架示例

诺岚
 诺岚
发布于 2017/08/29 15:50
字数 846
阅读 10
收藏 0

 

代码:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class ExecutorTest {
    //网页数
    private static Integer pages=1;
    //执行标识
    private static boolean exeFlag=true;

    public static void main(String[] args) {
        //创建ExcutorService 连接池默认连接10个
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        while (exeFlag){
            if (pages<=100){
                executorService.execute(new Runnable() {
                    public void run() {
                        System.out.println("爬取了第"+pages+"网页....");
                        pages++;
                    }
                });
            }else {
                if(((ThreadPoolExecutor)executorService).getActiveCount()==0){ // 活动线程个数是0
                    executorService.shutdown(); // 结束所有线程
                    exeFlag=false;
                    System.out.println("爬虫任务已经完成");
                }
            }
            try {
                Thread.sleep(100); // 线程休息0.1秒
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

运行结果:

 ExecutorTest
爬取了第1网页....
爬取了第2网页....
爬取了第3网页....
爬取了第4网页....
爬取了第5网页....
爬取了第6网页....
爬取了第7网页....
爬取了第8网页....
爬取了第9网页....
爬取了第10网页....
爬取了第11网页....
爬取了第12网页....
爬取了第13网页....
爬取了第14网页....
爬取了第15网页....
爬取了第16网页....
爬取了第17网页....
爬取了第18网页....
爬取了第19网页....
爬取了第20网页....
爬取了第21网页....
爬取了第22网页....
爬取了第23网页....
爬取了第24网页....
爬取了第25网页....
爬取了第26网页....
爬取了第27网页....
爬取了第28网页....
爬取了第29网页....
爬取了第30网页....
爬取了第31网页....
爬取了第32网页....
爬取了第33网页....
爬取了第34网页....
爬取了第35网页....
爬取了第36网页....
爬取了第37网页....
爬取了第38网页....
爬取了第39网页....
爬取了第40网页....
爬取了第41网页....
爬取了第42网页....
爬取了第43网页....
爬取了第44网页....
爬取了第45网页....
爬取了第46网页....
爬取了第47网页....
爬取了第48网页....
爬取了第49网页....
爬取了第50网页....
爬取了第51网页....
爬取了第52网页....
爬取了第53网页....
爬取了第54网页....
爬取了第55网页....
爬取了第56网页....
爬取了第57网页....
爬取了第58网页....
爬取了第59网页....
爬取了第60网页....
爬取了第61网页....
爬取了第62网页....
爬取了第63网页....
爬取了第64网页....
爬取了第65网页....
爬取了第66网页....
爬取了第67网页....
爬取了第68网页....
爬取了第69网页....
爬取了第70网页....
爬取了第71网页....
爬取了第72网页....
爬取了第73网页....
爬取了第74网页....
爬取了第75网页....
爬取了第76网页....
爬取了第77网页....
爬取了第78网页....
爬取了第79网页....
爬取了第80网页....
爬取了第81网页....
爬取了第82网页....
爬取了第83网页....
爬取了第84网页....
爬取了第85网页....
爬取了第86网页....
爬取了第87网页....
爬取了第88网页....
爬取了第89网页....
爬取了第90网页....
爬取了第91网页....
爬取了第92网页....
爬取了第93网页....
爬取了第94网页....
爬取了第95网页....
爬取了第96网页....
爬取了第97网页....
爬取了第98网页....
爬取了第99网页....
爬取了第100网页....
爬虫任务已经完成

Process finished with exit code 0

 

© 著作权归作者所有

共有 人打赏支持
诺岚
粉丝 0
博文 106
码字总数 185320
作品 0
广州
程序员
私信 提问
iframe去边框,无边框,使用大全

<iframe src=”you page’s url” width=”100″ height=”30″ frameborder=”no” border=”0″ marginwidth=”0″ marginheight=”0″ scrolling=”no” allowtransparency=”yes”></if......

liaolzy2
2014/09/24
0
0
Rust 异步编程框架 - Tokio

Tokio 是 Rust 中的异步编程框架,它将复杂的异步编程抽象为 Futures、Tasks 和 Executor,并提供了 Timer 等基础设施。Tokio 快速、可靠,且可扩展。 Tokio 是一个事件驱动的非阻塞 I/O 平台...

匿名
2018/07/18
0
4
Java多线程之线程池(ThreadPoolExecutor)实现原理分析(一)

在上一篇文章Java中实现多线程的3种方法介绍和比较中,我们讲解了Java中实现多线程的3种方法。使用多线程,就必须要考虑使用线程池,今天我们来聊聊线程池的那些事。 注:源码都是基于JDK1....

小怪聊职场
2018/05/14
0
0
Active Object 并发模式在 Java 中的应用

本文主要从以下两个方面进行阐述: 使用 C++ 语言,来描述 Active Object 设计模式。 Java 类库对于这样一个典型的模式做了很好的类库层面的封装,因此对于 Java 的开发者来说,很多关于该设计...

红薯
2010/08/08
308
0
Spring中@Configuration@EnableAsync@Async用法总结

引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在...

squanchao
2016/12/21
66
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链时代的拜占庭容错:Tendermint (七)

原文题目:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》 原文作者:Ethan Buchman 本文为节选 软件实现 Tendermint采用Go语言实现,代码在https://github.com/tend...

万向区块链
5分钟前
0
0
日志分级输出到指定文件

log4j.properties文件 #根设置,输出级别为DEBUG级别, 输出文件为 ERRORA,stdout,DEBUGAlog4j.rootLogger=DEBUG,ERRORA,stdout,DEBUGA#过滤掉spring框架下的额外日志#log4j.category...

嘴角轻扬30
10分钟前
0
0
Hash源码分析(JDK1.7和1.8的对比)

前言 HashMap 在 Java 和 Android 开发中非常常见 而HashMap 1.8 相对于 HashMap 1.7 更新多 今天,我将通过源码分析HashMap 1.8 ,从而讲解HashMap 1.8 相对于 HashMap 1.7 的更新内容,希望...

瑞查德-Jack
11分钟前
0
0
Amino——表现层

一、Amino 整体视觉感受 Amino采用的主题色是神秘的蓝紫色,搭配白色图标和文字,其他图标、按钮、卡片等采用饱和度较高的亮色,整体风格活泼灵动。蓝紫色给人一种神秘感,好比陌生人之间的社...

铸剑为犁413
12分钟前
0
0
日志服务与SIEM(如Splunk)集成方案实战

背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心(SOC)中。 名词解释 LOG(S...

阿里云官方博客
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部