Java并发编程之Thread-pre-message设计模式

Thread-Per-Message的意思是为每一个消息的处理开辟一个线程使得消息能够以并发的方式进行处理,从而提高系统整体的吞吐能力。相当于一个请求过来,就会有一个线程为当前请求服务。
特点:

  • 提升系统的响应,缩短响应时间

    当请求的资源比较耗时的时候,可以采用这个方法,当响应的时间比新创建一个线程还短的时候就没有必要使用。

  • 没有返回值

    无需等待实行的结果

  • 没有顺序可言

    请求没有先后的顺序性

public class Message {
    private final String name;

    public Message(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public class RequestHandler {
    private static ExecutorService executor = Executors.newFixedThreadPool(5);

    public void request(Message message){
        executor.execute(()->{
            try {
                System.out.println("The message will be handle by " + Thread.currentThread().getName() + " " + message.getName());
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

    public void shutdown(){
        executor.shutdown();
    }
}

public class PreThreadClient {

    public static void main(String args[]){
        final RequestHandler handler = new RequestHandler();
        IntStream.rangeClosed(1,10).forEach(i-> handler.request(new Message(String.valueOf(i))));
        handler.shutdown();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值