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转发给业务层
}
}
}
本文详细介绍JavaBIO高并发编程技巧,通过图解转发模块原理,深入剖析代码实现细节,展示如何使用Socket进行高效数据读写,以及如何利用多线程处理网络请求,提升服务器响应能力。
248

被折叠的 条评论
为什么被折叠?



