java使用多線程找出最大隨機(jī)數(shù)
本文實例為大家分享了java用多線程找出最大隨機(jī)數(shù)的具體代碼,供大家參考,具體內(nèi)容如下
問題: 系統(tǒng)隨機(jī)生成 10000 個數(shù),構(gòu)造 5 個線程并利用它們的 Join 方法計算這些隨機(jī)數(shù)的最大值。
思路:
1)、定義一個全局變量AllMax來記錄在最大值
2)、自定義myThread類繼承自Thread,重寫run函數(shù)。
3)、Run函數(shù),循環(huán)兩千次,每次產(chǎn)生一個10000以內(nèi)的隨機(jī)數(shù),與AllMax進(jìn)行比較,若大于AllMax,則立即將AllMax更新。
4)、實例化MyThread,創(chuàng)建五個線程,同步執(zhí)行。使用jion函數(shù),等各線程執(zhí)行完,則輸出AllMax
public class four2 {
static long AllMax=-1;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyThr t1=new MyThr();
MyThr t2=new MyThr();
MyThr t3=new MyThr();
MyThr t4=new MyThr();
MyThr t5=new MyThr();
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
try {
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("10000個數(shù)中的最大值為:"+AllMax);
}
public static class MyThr extends Thread{
public void run(){
long rand;
for(int i=1;i<=2000;i++){
rand=(long)(Math.random()*100000)%100000;
//System.out.println(rand);
if(rand>AllMax){
AllMax=rand;
}
}
}
}
}
--------------后話------------------
按照平時用的選擇最大隨機(jī)數(shù)的方法和多線程方法比較,所用時間還是普通方法快。
以下是測試對比圖:
1.傳統(tǒng)方法:

2.多線程方法所用時間:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot基于Redis實現(xiàn)短信登錄的操作
驗證碼登錄是非常常見的一種登錄方式,能夠簡化用戶登錄的過程,本文主要介紹了SpringBoot基于Redis實現(xiàn)短信登錄的操作,具有一定的參考價值,感興趣的可以了解一下2023-12-12
Java并發(fā) CompletableFuture異步編程的實現(xiàn)
這篇文章主要介紹了Java并發(fā) CompletableFuture異步編程的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
SpringBoot與單元測試JUnit的結(jié)合操作
這篇文章主要介紹了SpringBoot與單元測試JUnit的結(jié)合操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

