第七章 Thread-Per-Message模式 这项工作就交给你了

【Thread-Per-Message模式】每个消息一个线程。为每个命令或请求分配一个线程,由这个线程来执行处理。

在Thread-Per-Message模式中,消息的委托端和执行端是不同的线程。消息的委托端线程会告诉执行端线程“这项工作就交给你了”

 

【示例程序】

名字

说明

Main

向Host发送字符显示请求的类

Host

针对请求创建线程的类

Helper

提供字符显示功能的被动类

Main类

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");

     }

}

Host类

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

Java的匿名内部类创建Thread的子类实例,并使用该实例来启动线程。

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,int 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");

     }

     public void slowly() {

          try {

              Thread.sleep(100);

          } catch(InterruptedException e) {}

     }

}

【Thread-Per-Message模式中登场角色】

1 Client委托人

Client角色会向Host角色发出请求(request),但是并不知道Host角色是如何实现该请求的。

2 Host

Host角色收到Client角色的请求后,会新创建并启动一个线程。新创建的线程将使用Helper角色来处理请求。

3 Helper

Helper角色为Host角色提供请求处理的功能。Host角色创建的新线程会利用Helper角色。

 

【进程与线程】

1.进程与线程最大的区别就是内存是否共享。

每个进程都拥有彼此独立的内存空间,一个进程不可以擅自读取、写入其他进程的内存。由于进程的内存空间是彼此独立的,所以一个进程无须担心被其他进程破坏。

线程之间共享内存。我们经常让一个线程向内存中写入内容,来供其它线程读取。共享内存就是共享实例的意思,Java的实例分配在内存上,可由多个线程进行读写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值