快速业务通道

ejb与java序列化(2) 测试代码 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

ejb与java序列化(2) 测试代码

时间:2011-01-22

接上篇,有兴趣的朋友可以直接拿我的测试代码自行测试,请自行修改诸如线程数,执行时间,序列化的数据量大小等参数。如果想尝试做thread dump,可以打开相关的两个注释,会更方便一些,代码中都有相应的注释可供参考。

测试代码如下:

package test;

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList;

public class Test implements Runnable { //Notice! set the three test parameter to what you want first /** * thread count to run test */ private static final int THREAD_COUNT = 50; /** * time in seconds to run test */ private static final long TEST_TIME_SECOND = 1 * 30; /** * during test, we serialize a Data instance with an ArrayList that contains DataItem instance. * This is to set how many DataItem in the ArrayList. */ private static final long ITEMS_COUNT_IN_TEST_OBJECT = 1000;

private static int finishedCount = 0; private static boolean needStop = false; private static Object needStopLock = new Object(); private static Object finishedCountLock = new Object();

private static boolean isNeedStop() { synchronized (needStopLock) { return needStop; } }

private static void setNeedStop() { synchronized (needStopLock) { needStop = true; } }

private static void addFinisedCount() { synchronized (finishedCountLock) { finishedCount++; } }

ejb与java序列化(2) 测试代码(2)

时间:2011-01-22

/** * @param args */ public static void main(String[] args) { // run it first to load all the class new Test().test(); // to dump thread open these // try { // Thread.sleep(20 * 1000); // System.out.println("main sleep. go to find pid, we need it later to send signal"); // Thread.sleep(2 * 1000); // System.out.println("prepard to dump"); // } catch (InterruptedException e) { // e.printStackTrace(); // }

long timeBegin = System.currentTimeMillis(); for (int i = 0; i < THREAD_COUNT; i++) { Thread t = new Thread(new Test()); t.setName("testthread" + i); t.start(); }

long timeEnd = timeBegin + TEST_TIME_SECOND * 1000; while (System.currentTimeMillis() < timeEnd) { try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } setNeedStop(); System.out.println(THREAD_COUNT + " thread finished " + finishedCount + " times in " + TEST_TIME_SECOND + " seconds");

// to dump thread open these // try { // Thread.sleep(5 * 1000); // //System.out.println("dump now"); // } catch (InterruptedException e) { // e.printStackTrace(); // } }

public void run() { while (!isNeedStop()) { test(); addFinisedCount(); } }

private void test() { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Data data = new Data();

try { // long time1 = System.currentTimeMillis(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(data); bos.toByteArray(); // long time2 = System.currentTimeMillis();

// System.out.print((time2 - time1) + &qu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号