多线程程序设计学习(8)Thread-Per-Message
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的更多相关文章
- 多线程程序设计学习(2)之single threaded execution pattern
Single Threaded Execution Pattern[独木桥模式] 一:single threaded execution pattern的参与者--->SharedResourc ...
- 多线程程序设计学习(6)Producer-Consumer模式
Producer-Consumer[生产消费者模式]一:Producer-Consumer pattern的参与者--->产品(蛋糕)--->通道(传递蛋糕的桌子)--->生产者线程 ...
- 多线程程序设计学习(5)balking模式和timed模式
Balking[返回模式]timed[超时模式]一:balking pattern的参与者--->GuardedObject(被警戒的对象) --->该模式的角色:模拟修改警戒对象的线程, ...
- 多线程程序设计学习(4)guarded suspension模式
Guarded Suspension[生产消费者模式] 一:guarded suspension的参与者--->guardedObject(被防卫)参与者 1.1该 ...
- 多线程程序设计学习(3)immutable pattern模式
Immutable pattern[坚不可摧模式] 一:immutable pattern的参与者--->immutable(不变的)参与者 1.1:immutable参与者是一个 ...
- 多线程程序设计学习(13)Active Object pattern
Active Object[接收异步消息的对象] 一:Active Object的参与者--->客户端线程(发起某种操作请求处理)--->代理角色(工头)--->实际执行者(工人)- ...
- 多线程程序设计学习(12)Thread-soecific storage pattern
Thread-Specific-Storage[线程保管箱] 一:Thread-Specific Storage的参与者--->记录日志的线程(ClientThread)--->负责获取不 ...
- 多线程程序设计学习(11)Two-phapse-Termination pattern
Two-phapse-Termination[A终止B线程] 一:Two-phapse-Termination的参与者--->A线程--->B线程 二:Two-phapse-Termina ...
- 多线程程序设计学习(10)Future pattern
Future pattern[订单取货模式] 一:Future pattern的参与者--->Client(客户需求)--->Host(蛋糕门店)--->Data(票据和蛋糕的接口) ...
随机推荐
- IE10用video标签播放本地mp4文件失败的解决办法
1. 首先用“格式工厂”将要播放的视频文件按照“AVC高质量与大小”转换为要求格式的mp4文件: 2. 设置IIS7.5,添加mp4的MIME类型,步骤如下: 1.打开IIS管理器(运行inetmgr ...
- Java中Map的用法详解
Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...
- 大学生IT博客大赛最技术50强与最生活10强文章
姓名 学校 文章标题 文章地址 刘成伟 井冈山大学 [mystery]-linux黑客之网络嗅探底层原理 http://infohacker.blog.51cto.com/6751239/115511 ...
- OpenSessionInViewFilter 的配置及替代方案(转)
鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...
- js注册登录审核
<script type="text/javascript"> $(function(){ $("#sendSms").click(function ...
- efficient c++,单线程内存池
基于 http://www.cnblogs.com/diegodu/p/4555018.html operator new的知识基础上 介绍这个章节的内容 对于一般直接 new 与delete 性能较 ...
- [Ecmall]ECMALL目录结构设置与数据库表
最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方论坛连二次开发板块都没有,都在哪瞎扯淡,广告一堆.可悲~ ...
- 一个只需要点 「下一步」就完成监控 Windows
Cloud Insight 此前已然支持 Linux 操作系统,支持20多中数据库中间件等组件,多种操作,多种搭配,服务器监控玩的其乐无穷啊!但想想还有许多 Windows 的小伙伴没有体验过,所以在 ...
- python参考手册--第8章
1.模块和import (1)首次import module会做以下3件事: a)创建新的命名空间,用作在该源文件中定义的所有对象的容器.在模块中定义的函数和方法在使用global语句时将访问该命名空 ...
- tomcat 禁止某些文件(夹)的访问
tomcat 禁止某些文件(夹)的访问 <!-- 不允许访问的文件以及文件夹 --> <security-constraint> <display-name>Tom ...