I/O処理
java.ioパッケージ
1.ファイルシステム
2.ストリーム
バイトストリーム InputStream / OutputStream
文字ストリーム Writer / Reader
3.シリアライズ
1.Channel
2.Selector
3.Buffer
JavaのI/Oモデル
1.Blocking I/O
2.Blocking I/O + MultiThread(Thread Pool)
3.Non-blocking I/O + I/O multiplexing
4.Asynchronous I/O(Java 7)
Blocking I/O
read(socket, buffer);
process(buffer);
Non-blocking I/O
while(read(socket, buffer) != SUCCESS) {
...
}
process(buffer);
Asynchronous IO
class UserCompletionHandler {
void handle_event(buffer) {
process(buffer);
}
}
aioRead(socket, new UserCompletionHandler());
Blocking I/O
IO Multiplexing
class UserEventHandler {
void handle_event() {
if(can_read(socket)) {
read(socket, buffer);
process(buffer);
}
}
}
Reactor.register(new UserEventHandler(socket));
class Reactor {
void handle_events() {
while(1) {
sockets = select();
for(socket in sockets) {
get_event_handler(socket).handle_event();
}
}
}
}
Non-blocking I/O
I/O multiplexing
Asynchronous I/O