Thread-Per-Message【这个工作交给你模式】
一:Thread-Per-Message的参与者
--->Client(委托人)
--->host(中介开线程)
--->hepler(真正工作的工人)

二:Thread-Per-Message模式什么时候使用
--->提升响应时间,降低延迟时间
--->适合在操作顺序无所谓的时候
--->(委托人)不需要返回值的时候
--->应用在服务器的制作(我提供原材料,你加工,我不关心结果)
--->调用方法+启动线程--->完成某件事情(可以作为触发器)

三:Thread-Per-Message思考
--->进程和线程的区别
        ==>进程是工作在操作系统上的,线程是工作在进程中的。
        ==>进程的内存空间是独立的,不同的进程彼此独立,互不干扰
        ==>线程的内存空间是共享的,多个线程可以访问改写内存上的同一个对象
        ==>进程切换比较繁重,线程切换比较轻松。所以密切相关的事件,线程更合适

四进阶说明
--->java的内存模型中,将内存分为主存储器和工作内存两种。可让线程共享的,只有主存储器部分。

--->匿名内部类
        ==>匿名内部类是将类的声明与建立实例的操作写在一起。
        ==>虽然写在一起,也不是在执行方法时才建立出类文件。匿名内部类和一般类一样,都会在编译时生成类文件
        ==>匿名内部类中,用到方法的参数或局部变量时,必须将变量声明成final.如果不是,则编译错误

真正的工人

 package com.yeepay.sxf.thread7;
/**
* 执行任务的工人类
* @author sxf
*
*/
public class Helper { //任务就是将a打印b遍
public void handle(String a,int b) throws InterruptedException{
System.out.println(Thread.currentThread().getName()+"打印【"+a+"】开始");
for(int i=0;i<b;i++){
System.out.println("打印["+a+"]第["+(i+1)+"]遍");
Thread.sleep(1000);
}
System.out.println(Thread.currentThread().getName()+"打印【"+a+"】结束"); }
}

找工人开线程

 package com.yeepay.sxf.thread7;
/**
* 分发命令,找线程进行工作的类
* @author sxf
*
*/
public class Host {
//真正工作的工人
private final Helper helper=new Helper(); //启动新线程,去工作的类
public void request(final String a,final int b){ System.out.println("request begin==>"+a); //匿名内部类
new Thread(){ //线程体
@Override
public void run() { try {
//真正执行的工作
helper.handle(a, b);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }.start(); System.out.println("request end==>"+a);
}
}

主线程

 package com.yeepay.sxf.thread7;
/**
* 委托线程
* @author sxf
*
*/
public class Test { public static void main(String[] args) {
System.out.println("Test.main()主线程begin");
Host host=new Host();
host.request("尚晓飞", 10);
host.request("尚小帅", 10);
host.request("尚小燕", 10);
System.out.println("Test.main()主线程end");
} }

多线程程序设计学习(8)Thread-Per-Message的更多相关文章

  1. 多线程程序设计学习(2)之single threaded execution pattern

    Single Threaded Execution Pattern[独木桥模式] 一:single threaded execution pattern的参与者--->SharedResourc ...

  2. 多线程程序设计学习(6)Producer-Consumer模式

    Producer-Consumer[生产消费者模式]一:Producer-Consumer pattern的参与者--->产品(蛋糕)--->通道(传递蛋糕的桌子)--->生产者线程 ...

  3. 多线程程序设计学习(5)balking模式和timed模式

    Balking[返回模式]timed[超时模式]一:balking pattern的参与者--->GuardedObject(被警戒的对象) --->该模式的角色:模拟修改警戒对象的线程, ...

  4. 多线程程序设计学习(4)guarded suspension模式

    Guarded Suspension[生产消费者模式] 一:guarded suspension的参与者--->guardedObject(被防卫)参与者                1.1该 ...

  5. 多线程程序设计学习(3)immutable pattern模式

    Immutable pattern[坚不可摧模式] 一:immutable pattern的参与者--->immutable(不变的)参与者        1.1:immutable参与者是一个 ...

  6. 多线程程序设计学习(13)Active Object pattern

    Active Object[接收异步消息的对象] 一:Active Object的参与者--->客户端线程(发起某种操作请求处理)--->代理角色(工头)--->实际执行者(工人)- ...

  7. 多线程程序设计学习(12)Thread-soecific storage pattern

    Thread-Specific-Storage[线程保管箱] 一:Thread-Specific Storage的参与者--->记录日志的线程(ClientThread)--->负责获取不 ...

  8. 多线程程序设计学习(11)Two-phapse-Termination pattern

    Two-phapse-Termination[A终止B线程] 一:Two-phapse-Termination的参与者--->A线程--->B线程 二:Two-phapse-Termina ...

  9. 多线程程序设计学习(10)Future pattern

    Future pattern[订单取货模式] 一:Future pattern的参与者--->Client(客户需求)--->Host(蛋糕门店)--->Data(票据和蛋糕的接口) ...

随机推荐

  1. linux源码分析2

    linux源码分析 这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html  ...

  2. TF/IDF计算方法

    FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...

  3. Xcode8 - apploader 上传失败 - ERROR ITMS-90168: "The binary you uploaded was invalid."

    背景:最近电脑升级了系统macOS Sierra 10.12.1:Xcode 也升级到了Version 8.1 (8B62). 问题:使用Application Loader3.0 上传应用到iTun ...

  4. 在一个工程管理多个应用-b

    Demo:http://download.csdn.net/detail/u012881779/9166527 本文的产生是因产品经理提出的特殊需求: 一个针对多所学校的应用,对不同学校需要分别使用一 ...

  5. iOS人脸识别核心代码(备用)

    for (int i = 0; i < 1; i++) { //< [arr count]; i++) { CIFaceFeature *feature = [arr objectAtIn ...

  6. DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

    DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...

  7. checkbox复选框样式

    随着现代浏览器的流行,纯CSS设置checkbox也变的很是实用,下面会讲到5种与众不同的checkbox复选框. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,下面我们会改变它的外观.要 ...

  8. uva 1103

    弄懂题意后  其实就是一个dfs /************************************************************************* > Aut ...

  9. unity3d与eclipse协同工作环境

    原地址:http://bbs.9ria.com/thread-212576-1-1.html 这个过程非常复杂.步骤一定要谨记 1,建立一个unity3d工程,然后自己丢点模型进去吧.然后设置导出时候 ...

  10. 1990-D. 幻方

    描述 河图,黑点白点排列奥秘数阵:洛书,纵横斜三条线上数和皆15.这是一个古老的数字游戏,将1~9填入一个九宫格,使得每行.每列.对角线上数字的和都相同(为15).在西方,满足类似规律的矩阵称之为幻方 ...