lucene + hadoop 分布式并行計算搜索框架
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-23 評論-58 文章-0 trackbacks-0
JAVA NIO 多線程服務器 1.2版
Reactor 模式的 JAVA NIO 多線程服務器
public
class
MiniServer
extends
Thread
{
private
static
final
Log log
=
LogFactory.getLog(MiniServer.
class
);
private
final
Selector s;
private
final
ServerSocketChannel ssc;
private
ExecutorService executor;
public
MiniServer(
int
portnumber,ExecutorService executor)
throws
IOException
{
this
.executor
=
executor;
s
=
Selector.open();
ssc
=
ServerSocketChannel.open();
ssc.socket().bind(
new
InetSocketAddress(portnumber));
ssc.configureBlocking(
false
);
ssc.register(s,SelectionKey.OP_ACCEPT);
}
public
void
run()
{
try
{
while
(s.isOpen())
{
int
nKeys
=
s.select();
if
(nKeys
>
0
)
{
Iterator
<
SelectionKey
>
it
=
s.selectedKeys().iterator();
while
(it.hasNext())
{
SelectionKey key
=
it.next();
it.remove();
if
(
!
key.isValid()
||
!
key.channel().isOpen())
continue
;
if
(key.isAcceptable())
{
SocketChannel sc
=
ssc.accept();
if
(sc
!=
null
)
{
sc.configureBlocking(
false
);
sc.register(s, SelectionKey.OP_READ,
new
Reader(executor));
}
}
else
if
(key.isReadable()
||
key.isWritable())
{
Reactor reactor
=
(Reactor) key.attachment();
reactor.execute(key);
}
}
}
}
}
catch
(IOException e)
{
log.info(e);
}
}
}
public
interface
Reactor
{
void
execute(SelectionKey key);
}
public
class
Reader
implements
Reactor
{
private
static
final
Log log
=
LogFactory.getLog(Reader.
class
);
private
byte
[] bytes
=
new
byte
[
0
];
private
ExecutorService executor;
public
Reader(ExecutorService executor)
{
this
.executor
=
executor;
}
@Override
public
void
execute(SelectionKey key)
{
SocketChannel sc
=
(SocketChannel) key.channel();
try
{
ByteBuffer buffer
=
ByteBuffer.allocate(
1024
);
int
len
=-
1
;
while
(sc.isConnected()
&&
(len
=
sc.read(buffer))
>
0
)
{
buffer.flip();
byte
[] content
=
new
byte
[buffer.limit()];
buffer.get(content);
bytes
=
NutUtil.ArrayCoalition(bytes,content);
buffer.clear();
}
if
(len
==
0
)
{
key.interestOps(SelectionKey.OP_READ);
key.selector().wakeup();
}
else
if
(len
==-
1
)
{
Callable
<
byte
[]
>
call
=
new
ProcessCallable(bytes);
Future
<
byte
[]
>
task
=
executor.submit(call);
ByteBuffer output
=
ByteBuffer.wrap(task.get());
sc.register(key.selector(), SelectionKey.OP_WRITE,
new
Writer(output));
}
}
catch
(Exception e)
{
log.info(e);
}
}
}
public
class
Writer
implements
Reactor
{
private
static
final
Log log
=
LogFactory.getLog(Writer.
class
);
private
ByteBuffer output;
public
Writer(ByteBuffer output)
{
this
.output
=
output;
}
public
void
execute(SelectionKey key)
{
SocketChannel sc
=
(SocketChannel) key.channel();
try
{
while
(sc.isConnected()
&&
output.hasRemaining())
{
int
len
=
sc.write(output);
if
(len
<
0
)
{
throw
new
EOFException();
}
if
(len
==
0
)
{
key.interestOps(SelectionKey.OP_WRITE);
key.selector().wakeup();
break
;
}
}
if
(
!
output.hasRemaining())
{
output.clear();
key.cancel();
sc.close();
}
}
catch
(IOException e)
{
log.info(e);
}
}
}
posted on 2011-08-29 18:35
nianzai
閱讀(3100)
評論(3)
編輯
收藏
所屬分類:
NIO
評論:
#
re: JAVA NIO 多線程服務器 1.2版 2011-08-30 13:59 |
seo千里眼
這個多線程程序挺實用哦。
回復
更多評論
#
re: JAVA NIO 多線程服務器 1.2版 2011-09-03 16:13 |
阿不都外力
收藏一下!以后看。。。
回復
更多評論
#
re: JAVA NIO 多線程服務器 1.2版
2011-09-05 23:54 |
步步為營
Tomcat中用NIO比較多,搭建高性能服務器時NIO挺好用的,呵呵
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
JAVA NIO 多線程服務器 1.3版
JAVA NIO 多線程服務器 1.2版
JAVA NIO 多線程服務器 1.1版
<
2011年8月
>
日
一
二
三
四
五
六
31
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
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(9)
給我留言
查看公開留言
查看私人留言
隨筆分類
NIO(3)
Nut(lucene + hadoop 分布式并行計算框架)(5)
中文分詞(8)
分布式(2)
開發工具(2)
機器學習(1)
隨筆檔案
2013年5月 (1)
2013年4月 (3)
2012年9月 (3)
2012年8月 (2)
2012年7月 (1)
2012年6月 (2)
2011年8月 (3)
2011年4月 (2)
2011年2月 (1)
2010年12月 (1)
2010年11月 (1)
2010年10月 (1)
2010年9月 (1)
2010年7月 (1)
搜索
最新評論
1.?re: 基于詞典的正向最大匹配中文分詞算法,能實現中英文數字混合分詞
您好,您沒有給出Sentence和Token的定義,我猜不出啊
hdwgz@qq.com
--余道
2.?re: 全切分分詞程序,能實現中英文數字混合分詞
能對車牌號進行分詞嗎? M 是什么啊
--sdyjmc
3.?re: JAVA NIO 多線程服務器 1.3版 [未登錄]
Handle 這個方法里面寫的是什么處理呢?能否也貼出來看看
--z
4.?re: 腳本、Ajax網頁內容抓取工具(第二版)
共享源碼么
--diyunpeng
5.?re: JAVA NIO 多線程服務器 1.1版
ProcessCallable 這是什么包的呢
--jnan77
閱讀排行榜
1.?lucene + hadoop 分布式搜索運行框架 Nut 1.0a8(6667)
2.?lucene + hadoop 分布式搜索運行框架 Nut 1.0a9(5389)
3.?基于詞典的逆向最大匹配中文分詞算法,逆向分詞比正向分詞效果好 (4487)
4.?Nut開發環境搭建(虛擬機下hadoop0.20.2+zookeeper3.3.3+hbase0.90.2開發環境的搭建)(4074)
5.?隱馬可夫(HMM)中文分詞詞性標注程序(3862)
評論排行榜
1.?lucene + hadoop 分布式搜索運行框架 Nut 1.0a8(11)
2.?lucene + hadoop 分布式搜索運行框架 Nut 1.0a9(9)
3.?Nut開發環境搭建(虛擬機下hadoop0.20.2+zookeeper3.3.3+hbase0.90.2開發環境的搭建)(6)
4.?lucene + hadoop 分布式搜索運行框架 Nut 1.0a7(4)
5.?全切分分詞程序,能實現中英文數字混合分詞(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 nianzai
主站蜘蛛池模板:
亚洲精品tv久久久久久久久久
|
扒开双腿猛进入爽爽免费视频
|
亚洲狠狠爱综合影院婷婷
|
中文字幕亚洲码在线
|
国产免费看JIZZ视频
|
国产91在线|亚洲
|
性盈盈影院免费视频观看在线一区
|
亚洲自国产拍揄拍
|
色吊丝永久在线观看最新免费
|
亚洲国产精品99久久久久久
|
国产精品视_精品国产免费
|
精品国产_亚洲人成在线
|
免费一级成人毛片
|
拍拍拍无挡视频免费观看1000
|
亚洲情综合五月天
|
香港a毛片免费观看
|
亚洲精品中文字幕乱码
|
大学生a级毛片免费观看
|
久久亚洲色WWW成人欧美
|
亚洲av午夜精品一区二区三区
|
久久WWW免费人成—看片
|
亚洲精品高清国产一久久
|
又大又硬又爽又粗又快的视频免费
|
亚洲三级中文字幕
|
成人人免费夜夜视频观看
|
黄色一级视频免费观看
|
亚洲区小说区激情区图片区
|
全免费a级毛片免费看
|
亚洲一区二区三区免费观看
|
日本a级片免费看
|
久久成人18免费网站
|
亚洲日韩乱码中文无码蜜桃臀
|
一二三四在线播放免费观看中文版视频
|
最新亚洲卡一卡二卡三新区
|
国产精品亚洲高清一区二区
|
日韩精品人妻系列无码专区免费
|
国产亚洲精品成人AA片
|
国产亚洲一区二区三区在线不卡
|
国产高清不卡免费在线
|
一边摸一边桶一边脱免费视频
|
久久久久亚洲AV无码麻豆
|