给定一个int数组,假设有10000个长度,里面放满1-100的随机整数。用java编程需要用串行循环计算和Executors框架两种方法,实现查找并输出该数组中50的出现个数,并且在程序中加个运行时间最后对比两种方法的执行速度。 。给出完整java代码
时间: 2024-05-09 07:20:02 浏览: 18
串行循环方法:
```
import java.util.Random;
public class SerialLoop {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[10000];
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100) + 1;
}
int count = 0;
long start = System.currentTimeMillis();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 50) {
count++;
}
}
long end = System.currentTimeMillis();
System.out.println("The number of 50 in the array is: " + count);
System.out.println("Time taken: " + (end - start) + "ms");
}
}
```
Executors框架方法:
```
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
public class ExecutorsMethod {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[10000];
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100) + 1;
}
AtomicInteger count = new AtomicInteger(0);
long start = System.currentTimeMillis();
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < arr.length; i++) {
executorService.execute(new Runnable() {
@Override
public void run() {
if (arr[i] == 50) {
count.incrementAndGet();
}
}
});
}
executorService.shutdown();
while (!executorService.isTerminated()) {
// waiting for all threads to finish
}
long end = System.currentTimeMillis();
System.out.println("The number of 50 in the array is: " + count);
System.out.println("Time taken: " + (end - start) + "ms");
}
}
```