日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java多線程服務(wù)器如何應(yīng)對相關(guān)鏈接問題

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

10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有磐安免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

要開始同時處理多臺客戶機,并不需要對 RemoteFileServer 作太多改變。事實上,要是我們前面討論過待發(fā)(backlog),那我們就只需改變一個方法,雖然我們將需要創(chuàng)建一些新東西來處理進入的連接。這里我們還將向您展示Java多線程服務(wù)器 ServerSocket 如何處理眾多等待(備份)使用服務(wù)器的客戶機。本示例對線程的低效使用,所以請耐心點。

接受(太多)連接

這里我們實現(xiàn)改動過的 acceptConnections() 方法,它將創(chuàng)建一個能夠處理待發(fā)請求的 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() ,所以這些代碼實際上是一樣的。突出顯示的行表示一個重大的不同。對這個多線程版,我們現(xiàn)在可以指定客戶機請求的最大數(shù)目,這些請求都能在實例化 ServerSocket 期間處于待發(fā)狀態(tài)。如果我們沒有指定客戶機請求的最大數(shù)目,則我們假設(shè)使用缺省值 50。

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

【編輯推薦】

  1. Java多線程如何創(chuàng)建多個線程
  2. Java多線程優(yōu)化之偏向鎖原理分析
  3. Java多線程初學(xué)者指南系列教程
  4. 使用Java多線程實現(xiàn)任務(wù)分發(fā)
  5. 用Java多線程實現(xiàn)無阻塞讀取遠程文件

分享標題:Java多線程服務(wù)器如何應(yīng)對相關(guān)鏈接問題
文章地址:http://www.dlmjj.cn/article/dpjhhde.html