- 前言
- 一、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、它缩短了响应时间,但是没有降低实际的任务执行时间



