下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Java多线程在交易中间件测试中的应用(2)

作者:课课家教育     来源: http://www.kokojia.com点击数:959发布时间: 2016-02-03 13:55:33

标签: java语言java编程java入门

大神带你学编程,欢迎选课

  java 多线程编程

  从交易中间件的概念中可以看出,如果要模拟 客户端使用交易中间件,首先要模拟建立 Socket 连接。接下来,如果需要模拟多个用户的连接,就需运用用 Java 的多线 程机制了。

  Java 的多线程机制使应用程序能够并发的执行,并且 Java 能够运用同步机制使并发的线程能够互斥的 使用共享资源,从而达到线程安全的作用。Java 的多线程的实现方法有两种:1) 通过 Thread 继承。为创建一个线程,最 简单的方法就是从 Thread 类继承。2) 通过 Runnable 接口。该方式主要是用来实现特殊功能,如复杂的多继承功能等。 Runnable 接口的应用虽然提高了软件开发的灵活度,但是同时也是造成 BUG 的根源之一,所以应根据不同的需求,合适的 选取两种方法,两种实现的方法的代码可见代码清单一。

  清单 1.Java 多线程实现的两种方式

  // 方式一

  public class MyThread extends Thread {

  public void run() {

  System.out.println("MyThread.run()");

  }

  }

  // 在合适的地方启动线程如下:

  MyThread myThread1 = new MyThread();

  MyThread myThread2 = new MyThread();

  myThread1.start();

  myThread2.start();

  // 方式二

  public class MyThread extends OtherClass implements Runnable {

  public void run() {

  System.out.println("MyThread.run()");

  }

  }

  // 为了启动 MyThread,需要首先实例化一个 Thread,并传入自己的 MyThread 实例

  MyThread myThread = new MyThread();

  Thread thread = new Thread(myThread);

  thread.start();

  在 Java 中,要实现多线程流程控制方法有以下几个:

  通过 sleep() 来实现 Java 多 线程流程控制,可以用于多线程流程控制演示。

  通过 interrupt() 函数对 Java 多线程进行流程控制。这种控制方法比 sleep() 函数要精确得多,但在用法上与 sleep() 函数不太相同。

  通过 wait() 和 notify() 来进行流程控制。wait() 方式与 sleep() 方式有相同之处,都是从线程内部对线程进行中 断的。不同的是,它没有提供中断时间,其唤醒方式就是 notify() 和 notifyA ll()。

  通过 join() 来进行流程控制,join()方式结合了 interrupt 和 sleep 方式的优点。在实际设计当中应注意使用 join 方式,因为不恰当的使用可能会打乱线程的流程。

  项目面临的问题

  项目背景

  IBM 的 IMS 和 CICS (1968)是在 IBM 大型机 mainframe 时代最早的交易中间件,它们都采用请求队列管理、检查点机制和批处理的启动机制 。本文所要测试的交易中间件正是 IBM 公司的大型数据库产品 IMS 的交易中间件。它提供了交易处理的通信、并发访问控 制、事务控制、资源管理和必要的事务监听功能。IMS 的控制及数据流程可见图 2。

  图 2. IMS 控制及数据流程

Java多线程在交易中间件测试中的应用(2)_java语言_java编程_课课家项目需 求

  在 IMS TM 中,负责 TCP/IP 通信的模块是 IMS Connect,这也是本文测试的核心连接模块。该模块的新增功能 包括 TCPIPQ 和 Health Report 功能。TCPIPQ 是一个 socket 连接的缓冲队列,那些暂时没有被接受的连接请求会进入这 个队列,它的大小是可控的。Health Report 功能是定时的检查目前的 socket 连接是否达到最大连接数,并且将已连接的 比例汇报给相应的控制模块,客户也可以通过命令查看当前已建立 socket 的占有率。

  面临的问题

  在测试这两个新增功能时,由于 IMS Connect 能够建立的最大 Socket 连接数可以达到 65535 个,而最少的数目也有 100。这么多的 socket 数目,如果一个一个的开启客户端程序来发起交易是不现实的。

  在测试 Health Report 时,当需要测试占有率达到百分之百,即模拟当前的 socket 连接已经达到上限的场景,需要 同时建立并发的请求,并且数目要足够多,达到连接上限。

  在测试 TCPIPQ 时,只有让现有的 socket 连接达到最大连接数,新的连接才能进入 TCPIPQ 队列。如果需要测试队列 的出队和入队操作是否正确,需要多个线程有规律的简历 socket 连接。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程