[問題] 請問要寫MultiThread的TCPserver該讀哪些書呢?

看板java作者 (喔不~~我不要當阿宅!!)時間16年前 (2009/11/04 13:12), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
如題 有一份作業是要寫一個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
main thread最後 XXX.close(), 你的sub thread就囧了xd
11/05 19:32, 1F

11/20 21:52, , 2F
剛寫完.... 竟然是一模一樣的題目 哈哈哈
11/20 21:52, 2F
文章代碼(AID): #1AyGr2dt (java)