Java多线程Thread-Per-Message模式

2018-11-12  本文已影响0人  aimountain

概述

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

示例程序

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 模式中的登场角色

上一篇 下一篇

猜你喜欢

热点阅读