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转发给业务层
}
}
}