Java BIO高并發編程
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轉發給業務層
}
}
}
智能推薦
高并發編程 -- 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 : 同步并阻塞(傳統阻塞型),服務器實現模式為一個連接一個線程,即客戶端有連接請求時服務器 端就需要啟動一個線程進行處理,如果這個連接不做任何事情會造成不必要的...