[問題] wait() notify() 使用時機
學期結束了版上就真的變冷清了XD
===
synchronized 問題大概是我學 java 到現在每次要用
都要重看的部分 XD
基本的 Producer 與 Consumer這個我是能夠理解,要怎麼使用
我現在想做一個系統,直覺上好像能用 wait notify 來解決
我想問的是:
假設我現在有一個 ServerSocket 接受來自 N 個 client 的連線
( socket=serverSocket.accept() 的 socket assign 給一個 thread 的 class)
每個 Client 連入的時候,都會傳個指令給 Server
如果 Client 的指令是 A ,就 hold 住這個 client 的 thread
如果有任何一個 Client 的指令是 B ,
就讓所有 hold 住的 class 繼續往下跑
很直覺的用 wait() notify() 來做... 但試不出來
目前問題似乎已經不是「能不能做到」而是為什麼會卡住了XD (底下補充)
想請問對這部分比較熟的板大們, wait() notify() 可以這樣做嗎?
(發現問題似乎不在這邊,而是 connect 的問題,所以 wait-notify 應該做得到吧?)
========== 補充 ============
發現似乎是根本沒接受下一個 client 連線 , 一部分的 Code :
ServerSocket svr=new ServerSocket(port);
Socket skt;
System.out.println("Server Start listening, port : "+port);
while(true){
skt=svr.accept();
ClientInstance client=new ClientInstance(skt);
client.start();
System.out.println("Server Connected : "+client);
}
程式執行到 client.start() 後,確實是有跑出 Server Connected
不過如果我在 ClientInstance 裡面的 run() 有停頓動作(如 wait , sleep)
那麼下一個 連線無法連入。
Client 端是瀏覽器 , 這個程式是想要用 Socket 模擬 httpServer.
必須是 Multi-Thread
或者有沒有推薦現成的套件呢 0.0 ? (SE 為主啦XD)
((還是說要做一個 http server 沒那麼簡單...
====
LaPass 大提供的 demo 之前我有找到過試過
也是一樣在第一個進來的 client 還沒 response 之前
第二個 Client 進不來
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.162.164
推
06/29 09:44, , 1F
06/29 09:44, 1F
推
06/29 09:59, , 2F
06/29 09:59, 2F
→
06/29 10:38, , 3F
06/29 10:38, 3F
推
06/29 11:45, , 4F
06/29 11:45, 4F
推
06/29 11:54, , 5F
06/29 11:54, 5F
→
06/29 12:22, , 6F
06/29 12:22, 6F
推
06/29 12:31, , 7F
06/29 12:31, 7F
→
06/29 12:32, , 8F
06/29 12:32, 8F
→
06/29 12:32, , 9F
06/29 12:32, 9F
→
06/29 12:37, , 10F
06/29 12:37, 10F
推
06/29 12:53, , 11F
06/29 12:53, 11F
→
06/29 13:06, , 12F
06/29 13:06, 12F
※ 編輯: darkk6 來自: 140.116.39.75 (06/29 13:33)
→
06/29 14:19, , 13F
06/29 14:19, 13F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 5 篇):