自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java多線(xiàn)程服務(wù)器如何應(yīng)對(duì)相關(guān)鏈接問(wèn)題

開(kāi)發(fā) 后端
Java多線(xiàn)程服務(wù)器需要我們不斷的進(jìn)行相關(guān)問(wèn)題的學(xué)習(xí),在不斷的學(xué)習(xí)中才能更好的掌握相關(guān)知識(shí)。希望大家有所幫助。

Java多線(xiàn)程服務(wù)器是目前很多企業(yè)都在使用的一種服務(wù)器方式。相關(guān)的問(wèn)題還是需要不斷的學(xué)習(xí),只有不斷的學(xué)習(xí)才能更好的掌握相關(guān)的問(wèn)題解決方案。希望大家有所收獲。

前面的示例教給您基礎(chǔ)知識(shí),但并不能令您更深入。如果您到此就停止了,那么您一次只能處理一臺(tái)客戶(hù)機(jī)。原因是 handleConnection() 是一個(gè)阻塞方法。只有當(dāng)它完成了對(duì)當(dāng)前連接的處理時(shí),服務(wù)器才能接受另一個(gè)客戶(hù)機(jī)。在多數(shù)時(shí)候,您將需要(也有必要)一個(gè)Java多線(xiàn)程服務(wù)器。

要開(kāi)始同時(shí)處理多臺(tái)客戶(hù)機(jī),并不需要對(duì) RemoteFileServer 作太多改變。事實(shí)上,要是我們前面討論過(guò)待發(fā)(backlog),那我們就只需改變一個(gè)方法,雖然我們將需要?jiǎng)?chuàng)建一些新東西來(lái)處理進(jìn)入的連接。這里我們還將向您展示Java多線(xiàn)程服務(wù)器 ServerSocket 如何處理眾多等待(備份)使用服務(wù)器的客戶(hù)機(jī)。本示例對(duì)線(xiàn)程的低效使用,所以請(qǐng)耐心點(diǎn)。

接受(太多)連接

這里我們實(shí)現(xiàn)改動(dòng)過(guò)的 acceptConnections() 方法,它將創(chuàng)建一個(gè)能夠處理待發(fā)請(qǐng)求的 ServerSocket ,并告訴 ServerSocket 接受連接:

Java代碼

  1. public void acceptConnections() {   
  2. try {   
  3. ServerSocket server = new ServerSocket(listenPort, 5);   
  4. Socket incomingConnection = null;   
  5. while (true) {   
  6. incomingConnection = server.accept();   
  7. handleConnection(incomingConnection);   
  8. }   
  9. } catch (BindException e) {   
  10. System.out.println("Unable to bind to port " + listenPort);   
  11. } catch (IOException e) {   
  12. System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);   
  13. }   
  14. }   
  15. public void acceptConnections() {  
  16. try {  
  17. ServerSocket server = new ServerSocket(listenPort, 5);  
  18. Socket incomingConnection = null;  
  19. while (true) {  
  20. incomingConnection = server.accept();  
  21. handleConnection(incomingConnection);  
  22. }  
  23. } catch (BindException e) {  
  24. System.out.println("Unable to bind to port " + listenPort);  
  25. } catch (IOException e) {  
  26. System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);  
  27. }  

 

新的 server 仍然需要 acceptConnections() ,所以這些代碼實(shí)際上是一樣的。突出顯示的行表示一個(gè)重大的不同。對(duì)這個(gè)多線(xiàn)程版,我們現(xiàn)在可以指定客戶(hù)機(jī)請(qǐng)求的最大數(shù)目,這些請(qǐng)求都能在實(shí)例化 ServerSocket 期間處于待發(fā)狀態(tài)。如果我們沒(méi)有指定客戶(hù)機(jī)請(qǐng)求的最大數(shù)目,則我們假設(shè)使用缺省值 50。

這里是它的工作機(jī)制。假設(shè)我們指定待發(fā)數(shù)(backlog 值)是 5 并且有五臺(tái)客戶(hù)機(jī)請(qǐng)求連接到我們的服務(wù)器。我們的服務(wù)器將著手處理第一個(gè)連接,但處理該連接需要很長(zhǎng)時(shí)間。由于我們的待發(fā)值是 5,所以我們一次可以放五個(gè)請(qǐng)求到隊(duì)列中。我們正在處理一個(gè),所以這意味著還有其它五個(gè)正在等待。等待的和正在處理的一共有六個(gè)。當(dāng)我們的服務(wù)器仍忙于接受一號(hào)連接(記住隊(duì)列中還有 2―6 號(hào))時(shí),如果有第七個(gè)客戶(hù)機(jī)提出連接申請(qǐng),那么,在Java多線(xiàn)程服務(wù)器中該第七個(gè)客戶(hù)機(jī)將遭到拒絕。我們將在帶有連接池服務(wù)器示例中說(shuō)明如何限定能同時(shí)連接的客戶(hù)機(jī)數(shù)目。

【編輯推薦】

  1. Java多線(xiàn)程如何創(chuàng)建多個(gè)線(xiàn)程
  2. Java多線(xiàn)程優(yōu)化之偏向鎖原理分析
  3. Java多線(xiàn)程初學(xué)者指南系列教程
  4. 使用Java多線(xiàn)程實(shí)現(xiàn)任務(wù)分發(fā)
  5. 用Java多線(xiàn)程實(shí)現(xiàn)無(wú)阻塞讀取遠(yuǎn)程文件
責(zé)任編輯:張浩 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-03-19 14:01:55

Java Socket

2010-03-16 18:40:59

Java多線(xiàn)程編程

2010-03-16 19:29:26

Java多線(xiàn)程操作

2010-03-16 13:47:48

Java多線(xiàn)程服務(wù)器

2009-02-18 10:41:16

多線(xiàn)程服務(wù)器穩(wěn)定Java

2010-03-17 17:54:25

java Socket

2009-02-27 11:15:00

多線(xiàn)程服務(wù)器MTS專(zhuān)用服務(wù)器

2013-11-08 17:10:10

2009-07-03 17:18:34

Servlet多線(xiàn)程

2011-12-08 13:04:06

JavaNIO

2018-11-28 09:53:50

游戲服務(wù)器線(xiàn)程

2010-07-20 13:41:30

Telnet服務(wù)器

2012-09-28 11:14:20

2010-07-14 09:52:50

SQL Server服

2011-03-09 13:13:21

2020-12-02 09:28:00

DDoS攻擊網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2010-09-02 11:20:47

SQL刪除

2018-12-20 09:36:24

2011-06-30 18:03:58

QT 多線(xiàn)程 服務(wù)器

2015-08-10 09:25:12

服務(wù)器數(shù)據(jù)丟失
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)