Java 线程与进程的速度比较(继承Thread实现)
来源:互联网 发布:美工主管岗位职责 编辑:程序博客网 时间:2024/06/02 05:21
一,简介
1,本篇通过一个实例,简单的看下通过进程与线程实现同样的工作,效率上是有差别的。
2,要实现的工作是,写100个文件。
二,知识点
1,实现线程非常简单,通过继承Thread类即可,继承后的run()方法会在单独的线程中跑。
2,可以通过System.currentTimeMillis()
获取当前时间精确到毫秒,通过程序运行前后时间相减即可获取程序运行时间。
三,代码实现
1,不通过线程,直接写一个文件,注意写的内容稍微多一点。
package com.maoge.thread;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;public class WriteFileMethod { private String filename; public WriteFileMethod(String filename){ this.filename=filename; } public void run() { byte buffer[]=new byte[1000000]; OutputStream out=null; try { out = new FileOutputStream(filename); out.write(buffer, 0, buffer.length); } catch (Exception ex) { System.out.println(ex.toString()); }finally{ try { out.close(); } catch (IOException ioEx) { System.out.println(ioEx.toString()); } } } }
2,通过线程写文件
package com.maoge.thread;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;public class WriteFileThread extends Thread{ private String filename; public WriteFileThread(String filename){ this.filename=filename; } @Override public void run() { byte buffer[]=new byte[1000000]; OutputStream out=null; try { out = new FileOutputStream(filename); out.write(buffer, 0, buffer.length); } catch (Exception ex) { System.out.println(ex.toString()); }finally{ try { out.close(); } catch (IOException ioEx) { System.out.println(ioEx.toString()); } } } }
3,测试类
package com.maoge.thread;public class WriteFileTest { public static void main(String[] args) { runMethod(); runThread(); } public static void runMethod(){ long startTime=System.currentTimeMillis(); for(int i=0;i<50;i++) { WriteFileMethod writeFile=new WriteFileMethod("D:\\temp\\"+i+".txt"); writeFile.run(); } long endTime=System.currentTimeMillis(); System.out.println("runMethod"+(endTime-startTime)); } public static void runThread(){ long startTime=System.currentTimeMillis(); for(int i=0;i<50;i++) { WriteFileThread writeFile=new WriteFileThread("D:\\temp\\"+(i+500)+".txt"); writeFile.start(); } long endTime=System.currentTimeMillis(); System.out.println("runThread"+(endTime-startTime)); }}
四,结果分析
运行结果如下(多次结果)
runMethod65runThread28runMethod64runThread33//更换方法顺序测试runThread20runMethod92runThread47runMethod63
哈哈,这个比较逻辑其实有一个明显的大BUG,不知道你发现了没有。不管怎么样,至少该程序证明了,使用线程起码不会浪费主线程太多时间。
阅读全文
0 0
- Java 线程与进程的速度比较(继承Thread实现)
- Java中继承thread类与实现Runnable接口的区别(实现线程)
- 在java编程时,线程创建实现Runnable接口与继承Thread类的不同
- java线程同时继承Thread实现Runnable
- 继承Thread 实现线程
- 继承Thread类的线程实现方法
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- 线程(继承Thread类实现)
- 线程与进程的比较
- 线程与进程的比较
- 线程与进程的比较
- 进程与线程的比较
- 线程与进程的比较
- 线程与进程的比较
- 进程与线程的比较
- 线程与进程的比较
- 进程与线程的比较
- 线程 thread 与 进程 process 的区别
- 微信小程序—自定义模态对话框实例
- Kmp算法
- tomcat启动报错后设置环境变量配置的为jdk1.7 但是用java -version查看版本却是1.8的解决方法
- [MyBatis]MyBatis入门(一)
- js中 javascript:void(0) 用法详解
- Java 线程与进程的速度比较(继承Thread实现)
- JAVA编码好习惯
- vue时间格式化
- ImageLoader获取网络图片
- 文件存储服务fullgc排查
- 求1加到n
- ImageLoader网络加载图片——可以本地缓存
- java攻城狮面试题<二>
- spring事物配置,声明式事务管理和基于@Transactional注解的使用