• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Java BIO高并發編程

    標簽: Java網絡編程  java

    Java BIO高并發編程

    圖解轉發模塊
    在這里插入圖片描述

    代碼實現

    public class Main implements Runnable {
        Socket socket = null;
        public Main(Socket socket){
            this.socket=socket;
        }
        @Override
        public void run() {
            try {
                new Writ().start();
                InputStream inputStream = socket.getInputStream();
                int len = 0;
                byte[] bytes = new byte[1024];
                while ((len = inputStream.read(bytes)) != -1) {
                    System.out.println(new String(bytes, 0, len, "utf-8"));
                }
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        class Writ extends Thread{
            OutputStream outputStream=null;
            Scanner scanner=null;
            @Override
            public void run() {
                try {
                    outputStream = socket.getOutputStream();
                    scanner=new Scanner(System.in);
                    String s="";
                    while (true){
                        s = scanner.next();
                        outputStream.write(s.getBytes());
                        outputStream.flush();
                        if(s.equals("p")){
                            break;
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    class Demo{
        public static void main(String[] args) throws IOException {
            ServerSocket serverSocket=new ServerSocket(8888);
            int nThreads = Runtime.getRuntime().availableProcessors()*2;
            ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
            while (true){//死循環進行轉發
                Socket accept = serverSocket.accept();//監聽
                executorService.submit(new Main(accept));//將監聽后socket轉發給業務層
            }
        }
    }
    
    
    版權聲明:本文為ProgramBoy001原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/ProgramBoy001/article/details/108032374

    智能推薦

    Java高并發編程學習筆記

    文章目錄 1. 什么是線程 2. 創建并啟動線程 2.1 正常情況 1. 什么是線程 2. 創建并啟動線程 2.1 正常情況 未完待續…...

    高并發編程 -- Java中CAS詳解

    目錄 鎖機制存在以下問題: volatile機制 什么是CAS 模擬CAS算法 : CAS的用處: 處理器是如何實現原子操作 1.處理器自動保證基本內存操作的原子性 2. 總線鎖定 3. 緩存鎖定 CAS優缺點 使用樂觀鎖還是悲觀鎖 CAS應用 concurrent包的實現   在JDK 5之前Java語言主要依靠synchronized關鍵字保證同步,這會導致有鎖。 一、鎖機制存在以下...

    Java并發編程與高可用

    1.基本概念 1.并發:同時擁有兩個或者多個線程,如果程序在單核處理器運行,多個線程將交替地換入或者換出內存,這些線程是“同時存在的”,每個線程都處于執行過程中的某個狀態,如果運行在多核處理器上,此時,程序中的每個線程都將分配在一個處理器核上,因此可以同時運行。 2.高并發:是互聯網分布式系統架構中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時并行處理很多請求。 ...

    Java高并發編程:線程鎖技術

    目錄 1 什么是線程鎖 2 synchronized 1. 對象鎖 2. 修飾對象方法 3. 類鎖 4. 對象鎖和類鎖 5. 賣火車票示例 6. 生產一個消費一個示例 3 Lock 3.1 重入鎖 ReentrantLock 3.2 讀寫鎖 4 Condition 示例1 示例2 5 死鎖 1 什么是線程鎖 實例的全局變量(共享資源)被修改時,會出現線程安全,需要對修改的方法加鎖,注意:只要要訪問...

    Java高并發編程詳解筆記

    終于看完了 … JMH是專門用于代碼微基準測試的工具集 warmup可直譯為預熱的意思, 在JMH中, Warmup所做的就是在基準測試代碼正式度量之前,先對其進行預熱,使得代碼的執行時經歷了類的早期優化, JVM運行期編譯,JIT優化之后的最終狀態. 從而能夠獲得代碼真實的性能數據. measurement則是真正的度量工作,在每一輪的度量中,所有的度量數據會被納入統計中(預熱數據...

    猜你喜歡

    Java高并發異步Socket編程

    為什么80%的碼農都做不了架構師?>>>    Java可擴展IO Doug Lee 大綱 可擴展的網絡服務 事件驅動 Reactor 模式 基礎版 多線程版 其他變體 java.io包中分阻塞IO API一覽 網絡應用服務器 Web服務器,分布式對象系統等等 它們的共同特點 Read請求 解碼請求報文 業務處理 編碼響應報文 發送響應 實際應用中每一個步驟的...

    JAVA網絡編程:BIO

    首先安裝netcat(window安裝教程)來模擬客戶端 BIO(Blocking IO)顧名思義阻塞式IO 在服務端的主要實現代碼是 這些方法都是阻塞的方法,沒有請求就會一直阻塞直到有新連接進來,或數據輸入輸出 單線程BIO 打上斷點,調試運行程序 下一步,可以看到程序阻塞在socket的accept方法,等待連接進來 accept方法也詳細說明了阻塞知道一個連接建立 用先前安裝好的netcat...

    Java BIO 編程

    聲明:內容來自尚硅谷教程,個人做學習記錄使用。 I/O 模型基本說明 I/O 模型簡單的理解:就是用什么樣的通道進行數據的發送和接收,很大程度上決定了程序通信的性能 Java共支持3種網絡編程模型/IO模式:BIO、NIO、AIO Java BIO : 同步并阻塞(傳統阻塞型),服務器實現模式為一個連接一個線程,即客戶端有連接請求時服務器端就需要啟動一個線程進行處理,如果這個連接不做任何事情會造成...

    Java BIO編程

    1. I/O 模型 1.1. I/O 模型基本說明 I/O 模型簡單的理解:就是用什么樣的通道進行數據的發送和接收,很大程度上決定了程序通信的性能 Java 共支持 3 種網絡編程模型/IO 模式:BIO、NIO、AIO Java BIO : 同步并阻塞(傳統阻塞型),服務器實現模式為一個連接一個線程,即客戶端有連接請求時服務器 端就需要啟動一個線程進行處理,如果這個連接不做任何事情會造成不必要的...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    精品国产乱码久久久久久蜜桃不卡