快速业务通道

Java 6中的线程优化真的有效么?——第二部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
       System.gc();         Thread.sleep(1000);                      long start = System.currentTimeMillis();         for (int i = 0; i < MAX; i++) {              concatBuffer("Josh", "James", "Duke");         }         long bufferCost = System.currentTimeMillis() - start;         System.out.println("StringBuffer: " + bufferCost + " ms.");         System.gc();         Thread.sleep(1000); start = System.currentTimeMillis(); for (int i = 0; i < MAX; i++) { concatBuilder("Josh", "James", "Duke"); } long builderCost = System.currentTimeMillis() - start; System.out.println("StringBuilder: " + builderCost + " ms."); System.out.println("Thread safety overhead of StringBuffer: " + ((bufferCost * 10000 / (builderCost * 100)) - 100) + "% \n"); } public static String concatBuffer(String s1, String s2, String s3) {        StringBuffer sb = new StringBuffer();        sb.append(s1);        sb.append(s2);        sb.append(s3);        return sb.toString(); } public static String concatBuilder(String s1, String s2, String s3) {        StringBuilder sb = new StringBuilder();        sb.append(s1);        sb.append(s2);        sb.append(s3);        return sb.toString(); } }

Java 6中的线程优化真的有效么?——第二部分(7)

时间:2011-05-20 infoq.com Jeroen Borgers 译:韩锴

清单2.

public class EATest {    private static final int MAX = 200000000; // 200 million    public static final void main(String[] args) throws InterruptedException {       // warm up the method cache       sumThreadUnsafe();       sumThreadSafe();       sumThreadUnsafe();       sumThreadSafe();       System.out.println("Starting test");       long start;       start = System.currentTimeMillis();       sumThreadUnsafe();       long unsafeCost = System.currentTimeMillis() - start;       System.out.println(" thread unsafe: " + unsafeCost + " ms.");       start = System.currentTimeMillis();       sumThreadSafe();       long safeCost = System.currentTimeMillis() - start;       System.out.println(" thread safe: " + safeCost + " ms.");   System.out.println("Thread safety overhead: "            + ((safeCost * 10000 / (unsafeCost * 100)) - 100) + "%\n");    }    public static int sumThreadSafe() {       String[] names = new String[] { "Josh", "James", "Duke", "B" };        ThreadSafeObject ts = new ThreadSafeObject();        int sum = 0;       for (int i = 0; i < MAX; i++) {       sum += ts.test(names[i % 4]);       }       return sum;    }    public static int sum

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号