Java多线程Thread-Per-Message模式

概述

这项工作就交给你了。把工作交给别人处理后,就可以返回继续做自己的工作。

示例程序

Main 向Host发送字符显示请求的类
Host  针对请求创建线程的类
Helper 提供字符显示功能的被动类
Main 类
public class Main {
  public static void main(String[] args) {
    Host host = new Host();
    host.request(10, ‘A');
    host.request(20, 'B');
    host.request(30, 'C');
    System.out.println("main END");
  }
}

Host 类

Host类的request方法启动了一个线程。实际操作将由该线程来执行。

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");
  }
}
Helper 类
public class Helper {
  public void handle(int count, char c) {
    System.out.println("   handle(" + count + ", " + ") BEGIN");
    for (int i = 0; i < count; i++ ) {
      slowly();
      System.out.print(c);
    }
    System.out.println("");
    System.out.print("      handle(" + count + ", " + c + ")  END";
  }
  
  private void slowly() {
    try {
      Thread.sleep(100);
    } catch (InterruptedException e) {}
  }
}

Thread-Per-Message 模式中的登场角色

  • Client (委托人)
    Client 角色会向Host 角色发出请求(request),但是并不知道是如何实现该请求的。在示例程序中,由Main类扮演。
  • Host
    Host角色收到Client角色的请求(request)之后,会新创建并启动一个线程。新创建的线程将使用Helper角色来“处理”(handle)请求,由 Host类扮演。
  • Helper(助手)
    Helper角色为Host角色提供请求处理的功能。Host角色创建新的线程会利用Helper角色。在示例程序中。由Helper类扮演。

你可能感兴趣的:(Java多线程Thread-Per-Message模式)