Multithreading Java线程执行时间不一致
我只是在试验多线程处理,我用随机数填充数组,比较两个线程和一个线程所用的时间。问题是第一个线程的时间比第二个线程的时间长得多 代码:Multithreading Java线程执行时间不一致,multithreading,Multithreading,我只是在试验多线程处理,我用随机数填充数组,比较两个线程和一个线程所用的时间。问题是第一个线程的时间比第二个线程的时间长得多 代码: class createList extends Thread { int[] array = new int[25000000]; public void run() { for (int i = 0; i < 25000000; i++) { array[i] = randomNu
class createList extends Thread
{
int[] array = new int[25000000];
public void run() {
for (int i = 0; i < 25000000; i++)
{
array[i] = randomNumber();
}
}
public static int randomNumber()
{
Random random = new Random();
return random.nextInt(50);
}
}
public class Main {
public static void main(String[] args) {
createList listcreator1 = new createList();
createList listcreator2 = new createList();
listcreator1.start();
listcreator2.start();
Stopwatch sw = new Stopwatch();
listcreator1.run();
System.out.println(sw.elapsedTime());
Stopwatch sw3 = new Stopwatch();
listcreator2.run();
System.out.println(sw3.elapsedTime());
Stopwatch sw2 = new Stopwatch();
int[] array = new int[50000000];
for (int i = 0; i < 50000000; i++)
{
array[i] = randomNumber();
}
System.out.println(sw2.elapsedTime());
}
public static int randomNumber()
{
Random random = new Random();
return random.nextInt(50);
}
}
类createList扩展线程
{
int[]数组=新int[25000000];
公开募捐{
对于(int i=0;i<25000000;i++)
{
数组[i]=randomNumber();
}
}
公共静态整数随机数()
{
随机=新随机();
返回random.nextInt(50);
}
}
公共班机{
公共静态void main(字符串[]args){
createList listcreator1=新建createList();
createList listcreator2=新建createList();
listcreator1.start();
listcreator2.start();
秒表sw=新秒表();
listcreator1.run();
System.out.println(sw.elapsedTime());
秒表sw3=新秒表();
listcreator2.run();
System.out.println(sw3.elapsedTime());
秒表sw2=新秒表();
int[]数组=新int[50000000];
对于(int i=0;i<50000000;i++)
{
数组[i]=randomNumber();
}
System.out.println(sw2.elapsedTime());
}
公共静态整数随机数()
{
随机=新随机();
返回random.nextInt(50);
}
}
控制台输出是
5.024,
0.945,
1.889
产生如此大差异的原因是什么?实际上,在第一次测量时,您已经运行了3次计算。您已经在后台启动了2个线程(使用“start”方法),在当前线程上启动了1个线程(使用“run”方法)。运行不会创建新线程。只需在当前on上执行操作,这是简单的方法执行 其他测量在后台没有任何作业的情况下执行,因此这是它们更快完成的方式