2010年7月21日 星期三

Java Thread 的應用

==== from http://catyku.pixnet.net/blog/post/28903471 ====

Thread的應用,最好的例子就是SocketServer,

Thread簡介可以參考Java Thread簡介

Apache Tomcat用最簡單的方式看,它也是個SocketServer,服務http要求及回覆,

底下有一個簡單的例子,可以建立一個SocketServer,等待Connection的連入

概念是建立一個port Waiting,有人連入後,則再回到Waiting

順便說明implement java.lang.Runnable的用法

public class SocketServer implements java.lang.Runnable {
private int port;
private java.net.ServerSocket ss;

public SocketServer(int port) throws java.io.IOException {
this.port = port;
// 建立一個ServerSocket
this.ss = new java.net.ServerSocket(port);
}

public void run() {
java.net.Socket sk = null;
while (true)// 永遠執行
{
// 等待連入
System.out.println("waiting...");
try {
// 取得連線Socket
sk = this.ss.accept();
// 取得Client連線Address
System.out.println(sk.getLocalAddress());
sk.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}

}
}

public static void main(String args[]) throws java.io.IOException {
// runable要new一個Thread,再把runnable置入
java.lang.Thread thread = new java.lang.Thread(new SocketServer(81));
thread.start();
}
}

可利利用Browser來測試結果,

在網址列打入http://localhost:81 http://ServerIP:port

可以看到Server程式回應如下:

waiting…
0.0.0.0/0.0.0.0
waiting…

取得連線Socket後馬上又accept等待了。

沒有留言:

張貼留言