首先說一下多執行緒的應用場景吧:
eg:1+2+3+..+1億;(最開始測試用的是1兆,但是超過了double的範圍,計算的資料不準確,用bigdecimal太麻煩了)
如何快速運算出資料結果 ?
常規演算法:
public static void main(string args)
system.out.println("1到1億累加的和為:" + sum);
}上面這一段**確實可以計算出資料最後的和: 5000000050000000。
但是呢 ? 速度太慢了。
這時候就可以用多執行緒。
上面的**用的是1個執行緒執行,需要時間大約30毫秒。
如果同時開10個執行緒,時間就會大大縮短近6倍。
先不用執行緒池吧,建立執行緒有3種方式,測試這個必須用第3種方式,因為多執行緒只有callable有返回值:
多執行緒演算法:
1. 先建立乙個多執行緒執行的類
public class sum implements callable
@override
public list call() throws exception
long e = system.currenttimemillis();
long time = e - l;
// 將求和資料 與 求和時間 封裝到list集合。
arraylist arraylist = new arraylist();
arraylist.add(sum);
arraylist.add(time);
system.out.println("sum = " + sum);
return arraylist;
}}2. 建立10個多執行緒
public class testone else
}long s = 0, t = 0;
for (futuref : fs)
pool.shutdown();
// 這個時間不是很準確,但是計算時間,確實比單執行緒更快
}}
Java 多執行緒的使用
簡而言之 乙個程式是由程序組成,乙個程序是由執行緒組成的。乙個程式中可以存在多個程序,乙個程序中可以存在多個執行緒。單執行緒 一條主線執行下去,沒有分支。public class testmain public static void method1 string str public static...
java多執行緒
在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...
Java 多執行緒
1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...