1. 程式人生 > >java多執行緒的處理和序列處理的效率比較以及結果

java多執行緒的處理和序列處理的效率比較以及結果

多執行緒還是單執行緒處理任務需要關注的內容是單個任務執行消耗的時間,下面以一個公式進行說明,假設一個任務的執行時間為T(progress),執行緒切換的平均時間為T(change),任務執行時間所佔的比例 S=T(progress)/(T(progress) +T(change) ),S比例越高(任務執行時間越長),說明對當前任務單獨開闢一個執行緒的更有意義,如果一個任務執行時間很小,那麼就完全沒有必要為這個任務單獨開闢一個執行緒進行處理 ps:自己編寫的多執行緒和單執行緒的處理時間的程式 import java.util.*; public class baseExample { private static final long count=1000000; private static final int num=2000; public static void main(String[] args){ long start = System.currentTimeMillis (); for(int i =0;i <num;i++){ concurrency();            } double timeCon = Double.parseDouble(String.
valueOf(System.currentTimeMillis()-
start)); //多執行緒處理任務時間            System. out.println("concurrency time:"+(timeCon/num)); long serial = System.currentTimeMillis (); for(int i =0;i <num;i++){ serial();            } double timeSerial = Double.parseDouble(String.valueOf(System.currentTimeMillis
()-
serial)); //單執行緒的處理任務時間            System. out.println("serial time:"+(timeSerial/num));          } //多執行緒的測試例子 public static void concurrency(){ try{              Thread thread= new Thread(new Runnable(){ public void run(){ int a =0; for(long i =0;i <count;i++){ a+=5;                       }
                 }              }); thread.start(); int b =0; for(long i =0;i <count;i++){ b--;             } thread.join();         } catch(Exception e ){         }        } //單執行緒的處理任務的例子 public static void serial(){ int a =0; for(long i =0;i <count;i++){ a+=5;              } int b =0; for(long i =0;i <count;i++){ b--;             }        } }