java使用多线程找出最大随机数

本文实例为大家分享了java用多线程找出最大随机数的具体代码,供大家参考,具体内容如下

问题: 系统随机生成 10000 个数,构造 5 个线程并利用它们的 Join 方法计算这些随机数的最大值。

思路:

1)、定义一个全局变量AllMax来记录在最大值

2)、自定义myThread类继承自Thread,重写run函数。

3)、Run函数,循环两千次,每次产生一个10000以内的随机数,与AllMax进行比较,若大于AllMax,则立即将AllMax更新。

4)、实例化MyThread,创建五个线程,同步执行。使用jion函数,等各线程执行完,则输出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个数中的最大值为:"+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;
  }
  }
 }
 }
}

--------------后话------------------

按照平时用的选择最大随机数的方法和多线程方法比较,所用时间还是普通方法快。

以下是测试对比图:

1.传统方法:

2.多线程方法所用时间:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 如何用java生成指定范围的随机数

    要生成在[min,max]之间的随机整数, package edu.sjtu.erplab.io; import java.util.Random; public class RandomTest { public static void main(String[] args) { int max=20; int min=10; Random random = new Random(); int s = random.nextInt(max)%(max-min+1) + min; System.

  • java生成指定范围随机数的多种代码

    生成指定范围内的随机数这个是最常用的技术之一,程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例. 问题往往类似于: 如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100. 或者是: 如何随机生成随机的3位整数? 等等-- 以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数.例如(假设先有 Random rand = newRando

  • Java中的随机数详解

    在java中我们可以使用java.util.Random类来产生一个随机数发生.它有两个构造函数,分别是Random()和Random(long seed).Random()是用当前时间即System.currentTimeMillis()作为发生器的种子,而Random(long seed)是用指定的seed作为发生器的种子. 当随机数发生器就是Random对象产生以后,可以通过对象调用不同的方法:nextInt().nextLong().nextFloat().nextDouble()等来获

  • Java获取随机数的3种方法

    主要介绍了Java获取随机数的3种方法,主要利用random()函数来实现 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1))例: (int)(1+Math.random()*(10-1+1)) 从1到10的int型随数 方法2 获得随机数 for (int i=0;i<30;i++) {System.out.println((int)(1+Math.random()*10));} (int)(1+Math.random()*10) 通过java.Math包的ra

  • 史上最全的java随机数生成算法分享

    复制代码 代码如下: String password = RandomUtil.generateString(10); 源码如下: 复制代码 代码如下: package com.javaniu.core.util;import java.util.Random;public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS

  • JAVA获得包含0-9、a-z、A-Z范围内字符串的的随机数实例

    一.获得0-9,a-z,A-Z范围的随机字符串 复制代码 代码如下: /** * JAVA获得0-9,a-z,A-Z范围的随机数 * @param length 随机数长度 * @return String */ public static String getRandomChar(int length) { char[] chr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',

  • Java生成随机数的2种示例方法代码

    我们现在做个例子,比如生成20个0到10之间的随机数. 1.使用Random类的nextInt(n)方法,n代表0到n之间,包括0,不包括n 复制代码 代码如下: Random random = new Random();for(int i=0;i<20;i++){ System.out.println(random.nextInt(10));} 2.使用Math类中的random方法,它生成的随机数是0.0到1.0之间的double.要生成int就需要类型转换 复制代码 代码如下: for(i

  • Java实现按权重随机数

    一.问题定义: 问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数?? 例如: 复制代码 代码如下: 权重: 8  2  11  79 权重返回的值: 0  1  2   3 二.分析问题: 思路一:创建一个数组数组大小为权重和的大小,如值0的权重是8,则放入8个0值,值1的权重是2,则放入2个1值,依次类推. 然后用用一个权重和大小的随机数,产生随机数,即可.缺点要占用过多的内存. 思路二: 权重和数组 w[i]存储的是[0,i]元素的所有元素的权重和  时间复

  • java生成字母数字组合的随机数示例 java生成随机数

    复制代码 代码如下: package com.test; import java.util.Random; public class GenerateRandomNumber { public static void main(String[] args) { System.out.println("生成的10为随机数为:" + getCharAndNumr(10)); } /**  * java生成随机数字和字母组合  * @param length[生成随机数的长度]  * @re

  • java实现无符号数转换、字符串补齐、md5、uuid、随机数示例

    复制代码 代码如下: package com.hongyuan.test; import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;import java.util.UUID; /* * 杂项(无符号数转换,字符串补齐,md5,uuid,随机数) */public class SundryTest { //转成无符号数 public stati

随机推荐