栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Thread-per-message

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Thread-per-message

文章目录
  • 前言
  • 一、Thread-per-message简介
  • 二、程序例子
    • 1.Message类
    • 2.Message处理类
    • 3.客户端
    • 4.执行结果
  • 总结
  • 特点


前言

这一节内容比较简单,也就简单列个例子吧


一、Thread-per-message简介

字面理解就可以了,每个线程处理一个消息。

二、程序例子 1.Message类

代码如下:

package threadpermessage;

public class Message {
    private String value;

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

    public String getValue() {
        return value;
    }
}

2.Message处理类

代码如下:

package threadpermessage;

import java.util.Random;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MessageHandler {
    private final static Random random = new Random(System.currentTimeMillis());
    private final static Executor executor = Executors.newFixedThreadPool(5);

    public void request(Message message) {
        executor.execute(() -> {
            String value = message.getValue();
            try {
                Thread.sleep(random.nextInt(1000));
                System.out.println("The Value Will be handle By The Thread " + Thread.currentThread().getName() + " And The Value is " + value);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }

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

3.客户端
package threadpermessage;

import java.util.stream.IntStream;

public class Client {
    public static void main(String[] args) {
        final MessageHandler handler = new MessageHandler();
        IntStream.rangeClosed(1,5).forEach(i -> {
            handler.request(new Message(String.valueOf(i)));
        });
        handler.shutDown();
    }
}

4.执行结果
The Value Will be handle By The Thread pool-1-thread-5 And The Value is 5
The Value Will be handle By The Thread pool-1-thread-3 And The Value is 3
The Value Will be handle By The Thread pool-1-thread-1 And The Value is 1
The Value Will be handle By The Thread pool-1-thread-2 And The Value is 2
The Value Will be handle By The Thread pool-1-thread-4 And The Value is 4
总结

由执行结果可以看到,一共五个线程,每个线程都在处理自己的message

特点

1、提高响应性、缩短延迟时间;当一项任务的处理时间远大于线程启动时间,那么就可以应用该模式来提高响应性
2、执行任务无序,接受信息可能是有序的,但是执行任务是无序的。
3、它缩短了响应时间,但是没有降低实际的任务执行时间

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号