[問題] Thread的同步
假設我的code是這樣:
public ThreadPractice()
{
listen();
}
private void listen()
{
Thread t = new Thread()
{
public void run()
{
while(true)
{
//傾聽各種請求
事實上這裡是DatagramPacket的receive()方法,
因為會不斷的receive, 所以希望可以將整個while(ture)
都"同步化", 一次只處理一個receive的請求, e.g. 在
判斷封包的表頭後, 在做些處理.
}
}
};
t.start();
}
請問我該如何保證, while(true)這個區塊的同步?
我試過
private synchronized void listen()
可是好像沒有...
是我理解錯誤了嗎?
--
重要的是"心"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.64.129.167
推
04/17 09:20, , 1F
04/17 09:20, 1F
我的問題是不知道該如何正確的"同步化"那個while(true)區塊, 因為將synchronized
加在private synchronized void listen()這, 好像也感覺不出效果@@
※ 編輯: zeat 來自: 203.64.129.167 (04/17 16:31)
推
04/17 16:43, , 2F
04/17 16:43, 2F
→
04/17 16:45, , 3F
04/17 16:45, 3F
→
04/17 16:47, , 4F
04/17 16:47, 4F
→
04/17 16:48, , 5F
04/17 16:48, 5F
推
04/17 16:51, , 6F
04/17 16:51, 6F
可能我講的太模糊了, 其實這是個client-server的架構, server端必須無窮的接受
client的請求, 所以我才希望 一次只能有一個client 存取while(true){}這個區塊.
※ 編輯: zeat 來自: 203.64.129.167 (04/17 16:59)
推
04/17 17:14, , 7F
04/17 17:14, 7F
→
04/17 17:16, , 8F
04/17 17:16, 8F
→
04/17 17:17, , 9F
04/17 17:17, 9F
推
04/17 20:37, , 10F
04/17 20:37, 10F
→
04/17 20:39, , 11F
04/17 20:39, 11F