单线程与多线程的比较

假设有100个数据要处理   下面分别采用单线程和多线程进行来对比分析  说明采用多线程的好处

单线程的代码如下

package xiancheng;

import java.util.Vector;

/**
 *
 * @author Administrator
 * zyyjiao@mail.ustc.edu.cn
 */
public class OneMain {
    public static void main(String[] args) throws InterruptedException{
    Vector<Integer> list=new Vector<Integer>(100);
     for(int i=0;i<100;i++){
     list.add(i);
     }
     long str=System.currentTimeMillis();
     while(list.size()>0){
      int var= list.remove(0);
      Thread.sleep(100);
         System.out.println(var);
     }
     long end=System.currentTimeMillis();
        System.out.println("xiaohaowei "+(end-str)+"ms");
    
    }
   
}
xiaohaowei 10920ms

 

多线程的代码如下

package xiancheng;

import java.util.Vector;
 import java.util.concurrent.CountDownLatch;
 
public class MultiThread extends Thread {
      static Vector<Integer> list = new Vector<Integer>(100);
      static CountDownLatch count = new CountDownLatch(10);
 
      @Override
     public void run() {
 
          while (list.size() > 0) {
                try {
                     int val = list.remove(0);
                     System.out.println(val);
                     Thread.sleep(100);//模拟处理
                } catch (Exception e) {
                     // 可能数组越界,这个地方只是为了说明问题,忽略错误
                }
 
          }
         
           count.countDown(); // 删除成功减一
 
     }
 
     public static void main(String[] args) throws InterruptedException {
         
           for (int i = 0; i < 100; i++) {
                list.add(i);
           }
         
           long start = System.currentTimeMillis();
 //分别启动十个线程
          for (int i = 0; i < 10; i++) {
                new MultiThread().start();
           }
 
        
       //等待计数器的值减为零  也就是等待十个线程都执行完了以后才继续往下执行
          count.await();
           long end = System.currentTimeMillis();
           System.out.println("消耗 " + (end - start) + " ms");
 
     }
 
   
 }

消耗 1092 ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值