栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

合并或不合并Java加密服务提供者

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

合并或不合并Java加密服务提供者

如果让100个线程访问一个共享,

MessageDigest
并让它们分别计算1,000,000个哈希,则在我的计算机上,第一个线程完成70,160ms,最后一个完成98,748ms。

如果线程

MessageDigest
每次都创建一个新实例,那么第一个线程将在43,392ms内完成,最后一个58,691ms。

编辑:
实际上,在此示例中,只有两个线程,该示例创建新实例的运行速度更快。

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Share {  final byte[] bytes = new byte[100];  final MessageDigest sharedDigest;  final ExecutorService pool;  int threads = 100;  Share() throws NoSuchAlgorithmException {    sharedDigest = MessageDigest.getInstance("MD5");    pool = Executors.newFixedThreadPool(threads);  }  void go() {    for (int i=0; i<threads; i++) {      pool.execute(new Runnable() {        public void run() {          long start = System.currentTimeMillis();          for (int i=0; i<1000000; i++) {  try {   MessageDigest digest = MessageDigest.getInstance("MD5");   digest.reset();   digest.update(bytes);   digest.digest(); } catch (Exception ex) {   ex.printStackTrace(); }          }          long end = System.currentTimeMillis();          System.out.println(end-start);          pool.shutdown();        }      });    }  }  public static void main(String[] args) throws Exception {    Share share = new Share();    share.go();  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号