[問題] 請問要寫MultiThread的TCPserver該讀哪些書呢?
如題
有一份作業是要寫一個TCP server,讓多個(但有數量上限)client同時連上來存取資料
為了這份作業,我這完全沒寫過multiThread的新手已經翻了好幾本書
卻感到還是沒辦法解決問題,也許是資料沒有找對的緣故吧....
因此上來想請大家指點一下該去翻哪些書....
若有問不到要領的地方麻煩請別鞭太大力 >.<
這個TCP server要不斷地接受client端的request以改變server端的一些儲存紀錄
本來是想說一開始new 一個serverSocket物件
ServerSocket XXX = new ServerSocket("localhost", 6789);
再來 new 一個 Socket變數,以取得上面serverSocket accept()之結果
Socket connectionSocket = XXX.accept();
由於老師說,在上面這行時,java平台已經替這道連線另外開好一條連線了,
因此XXX這個ServerSocket可以再去監聽有無新的連線進來
所以server端的大致運作是這樣的
private ServerSocket XXX;
private connectionSocket;
在程式主體中︰
while(true) {
Socket connectionSocket = XXX.accept();
接下來將connectionSocket丟到某個implements Runnable的inner class
然後利用 Executor的ThreadPool產生一個新的thread以處理來自這個Socket
的request
最後 XXX.close();
}
請問這樣子的寫法有搞頭嗎?
又因為每一個連線所產生的thread都會存取到server的全域變數,
請問該讀哪些書才能解決這些連線搶資源的問題呢?
老師是叫我去看 thread safty的書,可是這領域也太大了吧 (汗)
不知道有哪個地方是會講些比較容易上手的實作方式,能較快上手的呢?
而且目前會使用的threadpool 也只有 executors中的 newFixedThreadPool
如果今天超出伺服器限制的client要連過來,那麼java究竟會如何與
超出threadpool數量上限的連線互動呢?
謝謝指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.136.155.236
推
11/05 19:32, , 1F
11/05 19:32, 1F
推
11/20 21:52, , 2F
11/20 21:52, 2F