Thread-Per-Message模式 这项工作交给你

定义:

在Thread-Per-Message模式中,消息的委托者和执行者是不同线程的,消息的委托者把消息的交给执行者去执行。

引例

类的一览表
名字说明
mian向host发送 字符显示请求的类
host针对请求创建的类
helper提供字符显示功能的被动类
public class Main {
    public static void main(String[] args) {
        System.out.println("main BEGIN");
        Host host = new Host();
        host.request(10, 'A');
        host.request(20, 'B');
        host.request(30, 'C');
        System.out.println("main END");
    }
}
public class Helper {
    public void handle(int count, char c) {
        System.out.println("        handle(" + count + ", " + c + ") BEGIN");
        for (int i = 0; i < count; i++) {
            slowly();
            System.out.print(c);
        }
        System.out.println("");
        System.out.println("        handle(" + count + ", " + c + ") END");
    }
    private void slowly() {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
        }
    }
}

 

public class Host {
    private final Helper helper = new Helper();
    public void request(final int count, final char c) {
        System.out.println("    request(" + count + ", " + c + ") BEGIN");
        new Thread() {
            public void run() {
                helper.handle(count, c);
            }
        }.start();
        System.out.println("    request(" + count + ", " + c + ") END");
    }
}

main BEGIN
    request(10, A) BEGIN
    request(10, A) END
        handle(10, A) BEGIN
    request(20, B) BEGIN
    request(20, B) END
        handle(20, B) BEGIN
    request(30, C) BEGIN
    request(30, C) END
main END
        handle(30, C) BEGIN
ABCCBACABCABACBBCAACBBCACBAACB
        handle(10, A) END
BCCBBCCBCBBC

Thread-Per-Message模式角色

client:委托人角色向host角色发出请求。

host:host角色收到client角色请求后,会创建并启动一个线程。先创建的线程使用helper角色处理请求

helper(助手):helper角色为host角色提供处理功能。

什么时候使用

适用于操作顺序没有要求

适用于不需要返回值时

适用于服务器

调用方法+启动线程--发送消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值