Heritrix之旅之ToeThread
来源:互联网 发布:java工程师前景 编辑:程序博客网 时间:2024/04/28 00:46
原文链接:http://www.cnblogs.com/MichaelYin/archive/2011/10/07/2200412.html
Heritrix是一个多线程的程序,里面使用工作线程来处理url,这些工作线程称为torThreads,这些toethread统一的被ToePool所管理,Toepool通过setSize方法来管理运行的toethread数目
view sourceprint?
00
public
void
setSize(
int
newsize) {
01
targetSize = newsize;
02
int
difference = newsize - getToeCount();
03
if
(difference > 0) {
04
// must create threads
05
for
(
int
i = 1; i <= difference; i++) {
06
startNewThread();
07
}
08
}
else
{
09
// must retire extra threads
10
int
retainedToes = targetSize;
11
Thread[] toes =
this
.getToes();
12
for
(
int
i = 0; i < toes.length; i++) {
13
if
(!(toes[i] instanceof ToeThread)) {
14
continue
;
15
}
16
retainedToes--;
17
if
(retainedToes >= 0) {
18
continue
;
// this toe is spared
19
}
20
// otherwise:
21
ToeThread tt = (ToeThread) toes[i];
22
tt.retire();
23
}
24
}
25
}
ToeThread从Frontier中获取待处理的url,然后ToeThread对url进行一系列的处理,当所有的处理流程完成之后,调用Frontier的finished方法告知url抓取完毕,ToeThread重新获取新的url
这是ToeThread中的run方法的代码
view sourceprint?
00
//从Frontier处获取待处理的url
01
CrawlURI curi = controller.getFrontier().next();
02
03
synchronized(
this
) {
04
continueCheck();
05
setCurrentCuri(curi);
06
}
07
08
//对url进行处理
09
processCrawlUri();
10
11
setStep(STEP_ABOUT_TO_RETURN_URI);
12
continueCheck();
13
14
//通知Frontier已经完成
15
synchronized(
this
) {
16
controller.getFrontier().finished(currentCuri);
17
setCurrentCuri(
null
);
18
}
19
结合前面Frontier的图,可能看的就会明白一点了。
- Heritrix之旅之ToeThread
- Heritrix之旅之Frontier
- Heritrix之旅之Processor
- Heritrix的多线程ToeThread和ToePool
- Heritrix的多线程ToeThread和ToePool
- [转]Heritrix之旅之CrawlController
- 【Heritrix基础教程之1】在Eclipse中配置Heritrix
- 【Heritrix基础教程之2】Heritrix基本内容介绍
- 【Heritrix基础教程之3】Heritrix的基本架构
- 【Heritrix基础教程之1】在Eclipse中配置Heritrix
- 【Heritrix基础教程之2】Heritrix基本内容介绍
- 【Heritrix基础教程之3】Heritrix的基本架构
- 扩展和定制Heritrix之Extractor
- 我的Heritrix学习之路(一)
- Heritrix
- Heritrix
- heritrix
- heritrix
- 希望我能有出息
- qt学习笔记(四) qt编程时遇到的问题的总结
- 浅谈继承和组合
- 栈的C语言实现
- eclipse SVN 插件安装下载地址
- Heritrix之旅之ToeThread
- Java编程中影响性能的一些特点
- 使用Google搜索引擎的技巧总结
- SQL Server与XML 数据
- Bridged networking and NAT in VMware
- Heritrix之旅之Processor
- 存档: ubuntu java sdk
- 架构师给程序员的一封信
- 求每隔1000素数的个数