第七章 Thread-Per-Message
来源:互联网 发布:中卫的云计算基地 编辑:程序博客网 时间:2024/06/05 02:50
背景介绍:每一个消息一个线程,forexample :ThreadLocal from jdk1.2 java.lang.ThreadLocal
使用场景:客户端送达的请求,由主线程来接收。而实际处理该请求,则交给其他线程负责,主线程回到继续等待其他客户端请求的状态,此时主线程会结束,然后其他线程
继续处理请求
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"); }}public class Helper { public void handle(int count, char 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"); } private void slowly() { try { Thread.sleep(100); } catch (InterruptedException e) { } }}
public class ThreadPerMessage { public static void main(String args[]) { System.out.println("BEGIN"); Object obj = new Object(); Blackhole.enter(obj); System.out.println("END"); }}class Blackhole { public static void enter(Object obj) { System.out.println("Step 1"); magic(obj); System.out.println("Step 2"); synchronized (obj) { System.out.println("Step 3 (never reached here)"); } } //用新线程反复获取obj锁定 public static void magic(final Object obj) { Thread thread = new Thread() { // inner class public void run() { synchronized (obj) { // 在此取得obj的锁定 synchronized (this) { this.setName("Locked"); // 不设置的话,magic方法跳不出来 this.notifyAll(); // 通知已经取得obj的锁定 让thread解除锁定 } /*try { this.join();//等待主线程结束,但是主线程卡死在obj上 } catch (InterruptedException e) { }*/ while (true) {//导致主线程永远得不到obj // 无穷循环 } } } }; synchronized (thread) { thread.setName(""); thread.start(); // 线程的启动 // Guarded Suspension模式 while (thread.getName().equals("")) { try { thread.wait(); // 等待新的线程取得obj的锁定 } catch (Exception e) { } } } }}
0 0
- 第七章 Thread-Per-Message
- Thread-Per-Message 模式
- Thread-Per-Message 模式
- Thread-Per-Message Pattern
- Thread-Per-Message Pattern
- Java线程之Thread-Per-Message Pattern
- Java多线程设计模式-学习笔记-Thread Per Message模式.
- java多线程设计模式之Thread-Per-Message模式
- Thread-Per-message Pattern--JAVA多线程编程模式(7)
- Java多线程设计模式详解学习笔记九——Thread-Per-Message
- POSIX线程-Per-Thread Storage
- 多线程服务器模型-one loop per thread
- windows, thread ,message queue
- android thread Handler 、Looper、 Message、 Message Queue
- A Thread's Message Queue
- Thread,looper,handler,message相关
- Thread、Looper、Handler和Message
- Thread、Handler、Looper以及Message
- Encharts 显示国内城市空气质量及领导行程图
- 如何把Activity的布局文件添加至窗口
- 根据日期判断 该日期是本月的第几周
- RabbitMQ四种Exchange类型之Direct (Java)
- C#--三行代码带你理解神秘的拆箱和装箱
- 第七章 Thread-Per-Message
- 【java】文件上传
- Memory Management(5)DXE 内存管理流程
- 中英文按照首字母A~Z顺序排序
- IntelliJ 导出jar包方法及部分问题解决
- php 生成百万数,不重复,并且打乱数字顺序,插入数据库
- 设置eclipse自动生成的author等注释
- 【软件测试】α测试和β测试的区别
- HaiQiu整理Android Studio插件