伪异步I/O编程

Server类

package com.ThreadPool;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {

        try {
            try (ServerSocket ss = new ServerSocket(8888)) {
                TheadPoolDemo theadPoolDemo = new TheadPoolDemo(10, 3);
                while (true) {
                    Socket accept = ss.accept();
                    ListenRunnable listenRunnable = new ListenRunnable(accept);
                    theadPoolDemo.excute(listenRunnable);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

这里我们依然使用Serversocket创建套接字,不同的是我们接下来创建了一个线程池类。传入线程队列大小以及线程最大容量,将一个Runnable实例传入线程池即可实现使用线程池的伪异步I/O编程

线程池实例类

package com.ThreadPool;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class TheadPoolDemo {
    private ExecutorService executorService;

    public TheadPoolDemo(int maxsize,int queuesize) {
        executorService = new ThreadPoolExecutor(3,maxsize,120, TimeUnit.SECONDS,new ArrayBlockingQueue<>(queuesize));
    }
    public void excute(Runnable target)
    {
        executorService.execute(target);
    }

}

Runnable类

package com.ThreadPool;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class ListenRunnable implements Runnable{
    private Socket socket;

    public ListenRunnable(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String msg;
            while ((msg = br.readLine())!=null)
            {
                System.out.println("客户端发来了"+msg);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值