文档章节

多线程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
博文 100
码字总数 174404
作品 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
Active Object 并发模式在 Java 中的应用

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

红薯
2010/08/08
230
0
Rust 异步编程框架 - Tokio

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

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

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

小怪聊职场
05/14
0
0
Spring中@Async用法总结

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

qq_34531925
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

71.告警系统主脚本 配置文件 监控项目

20.20 告警系统主脚本(main.sh) 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本(main.sh): ~1.约定:把以后所有的shell脚本放在/usr/local/sbin下,也方便我们查...

王鑫linux
17分钟前
0
0
装饰者模式

装饰者模式 Q:何为装饰模式? ()地给一个对象添加一些额外的(),并且()时,并不影响原对象。扩展功能来说,装饰器模式相比生成子类更为灵活。 Q:使用场景? 1.想要在不影响其他对象的情况下...

阿元
38分钟前
0
0
GO 切片(slice)相关语法

package mainimport("fmt")func main() {var intArr [5]int = [...]int{1,2,3,4,5} //定义一个数组slice := intArr[2:4] //第二个(包含)下标到第四个下标(不包含)fmt.Println...

汤汤圆圆
40分钟前
0
0
活动招募 HUAWEI HiAI公开课·北京站-如何在4小时把你的APP变身AI应用

人工智能和机器学习是全球关注的新趋势,也是当前最火爆、最流行的话题。当你拿手机用语音助手帮你点外卖,智能推荐帮你把周边美食一网打尽;当你拿起P20拍照时,它将自动识别场景进行最美优...

华为终端开放实验室
54分钟前
1
0
匹配两位小数,js正则

var regex = /^\d*(\.[1-9]|\.\d[1-9])*$/ console.log(1.2,regex.test(1.2)); console.log(0.3,regex.test(0.3)); console.log(1.03,regex.test(1.03)); ......

微信小程序-暗潮
58分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部