作者dream1124 (喔不~~我不要当阿宅!!)
看板java
标题[问题] 请问要写MultiThread的TCPserver该读哪些书呢?
时间Wed Nov 4 13:12:31 2009
如题
有一份作业是要写一个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
1F:推 petertc:main thread最後 XXX.close(), 你的sub thread就囧了xd 11/05 19:32
2F:推 choYM:刚写完.... 竟然是一模一样的题目 哈哈哈 11/20 21:52