package day2;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
import xiancheng.callable;
public class zuoyexianchengnumber {
// Random r = new Random();
//
int a =r.nextInt(100);
int b =r.nextInt(100);
int c =r.nextInt(100);
int num=a+b+c;
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(3);
mycallable taMycallable = new mycallable(1, 100);
mycallable taMycallable1 = new mycallable(1, 100);
mycallable taMycallable2 = new mycallable(1, 100);
Future<Integer> result = threadPool.submit(taMycallable);
Future<Integer> result1 = threadPool.submit(taMycallable1);
Future<Integer> result2 = threadPool.submit(taMycallable2);
threadPool.shutdown();
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("主线程在执行任务");
try {
System.out.println("线程1:"+result.get());
System.out.println("线程2:"+result1.get());
System.out.println("线程3:"+result2.get());
double sum = result.get() + result1.get() + result2.get();
System.out.println("结果为"+sum);
double avg=(result.get()+result1.get()+result2.get())/3;
System.out.println("平均数运行结果" + avg);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("所有任务执行完毕");
}
}
class mycallable implements Callable<Integer> {
int num = 0;
int num1 = 0;
public mycallable() {
}
public mycallable(int num, int num1) {
this.num = num;
this.num1 = num1;
}
@Override
public Integer call() throws Exception {
// TODO Auto-generated method stub
System.out.println("子线程在进行计算");
Thread.sleep(3000);
int sum=1+(int)(Math.random()*100);
return sum;
}
}
Java callable 多线程实现随机生成三个数字 并得到平均数
最新推荐文章于 2021-11-04 16:35:30 发布