本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
//非多线程 package test; import java.io.*; import java.security.DigestInputStream; import java.security.MessageDigest; /* * 利用DigestInputStream完成消息摘要计算, * 先调用此摘要输入流的一个 read 方法,之后在关联的消息摘要上调用一个 digest方法。 * 本案例包含两个程序,其中一个采用多线程,相互比较. */ public class DigestThread2 { private static File input; private static long beginTime ; public static void main(String[] args) { beginTime = System.currentTimeMillis(); for (int i = 0; i < args.length; i++) { input = new File(args[i]); try { FileInputStream in = new FileInputStream(input); MessageDigest sha = MessageDigest.getInstance("SHA"); DigestInputStream din = new DigestInputStream(in, sha); int b; while ((b = din.read()) != -1); din.close(); byte[] digest = sha.digest(); // 用一个字符缓冲器缓存 StringBuffer res = new StringBuffer(input.toString()); res.append(": "); for (int j = 0; j < digest.length; j++) { res.append(digest[j] + " "); } long endTime = System.currentTimeMillis(); System.out.println(Thread.currentThread().getName()+":"+res+"耗时 "+(endTime-beginTime)/1000+"秒"); } catch (Exception e) { e.printStackTrace(); } } } }
//多线程
package test; import java.io.*; import java.security.DigestInputStream; import java.security.MessageDigest; /* * 利用DigestInputStream完成消息摘要计算, * 先调用此摘要输入流的一个 read 方法,之后在关联的消息摘要上调用一个 digest方法。 * 本案例包含两个程序,其中一个采用多线程,相互比较. */ public class DigestThread extends Thread{ private static long beginTime ; private File input; public DigestThread(File input){ this.input=input; } //----------覆盖run()方法---------- public void run(){ try { FileInputStream in=new FileInputStream(input); MessageDigest sha=MessageDigest.getInstance("SHA"); DigestInputStream din=new DigestInputStream(in, sha); int b; while((b=din.read())!=-1);//不断读取 din.close(); byte[] digest=sha.digest(); //用一个字符缓冲器缓存 StringBuffer res=new StringBuffer(input.toString()); res.append(": "); for(int i=0;i<digest.length;i++){ res.append(digest[i]+" "); } long endTime = System.currentTimeMillis(); System.out.println(currentThread().getName()+":"+res+"耗时 "+(endTime-beginTime)/1000+"秒"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { beginTime = System.currentTimeMillis(); for(int i=0;i<args.length;i++){ File f=new File(args[i]); Thread t=new DigestThread(f); t.setName("线程"+(i+1)); t.start(); } System.out.println("main()结束!"); } }
注意启动程序前设置参数F:/f1.txt F:/f2-4.txt F:/f3.txt F:/f4.txt F:/f5.txt F:/f6.txt F:/f7.txt
读入的单个文件在10M左右为宜,在IO频繁的程序里使用多线程,充分利用CPU空闲时间。
阅读和此文章类似的: 程序员专区