package Thread_case5_package; import java.util.ArrayList; import java.util.Collections; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class Test { public static void main(String[] args) throws ExecutionException, InterruptedException { /* 有一个抽奖池,该奖池中存放了奖励金额,该抽奖池中的奖项为{10,5,20,50,100,200,500,800,2,80,300,700}; 创建两个抽奖箱(线程)设置线程名称分别为"抽奖箱1","抽奖箱2" 随机从抽奖池中获取奖项元素并打印在控制台上 打印每个奖箱的最高奖项,总金额 打印最高的奖项出现在哪个奖箱 */ //创建奖池 ArrayList list = new ArrayList<>(); Collections.addAll(list, 10, 5, 20, 50, 100, 200, 500, 800, 2, 80, 300, 700); //创建多线程要运行的参数对象 MyCallable mc = new MyCallable(list); //创建多线程运行结果的管理者对象 //线程一: FutureTask ft1 = new FutureTask<>(mc); //线程二: FutureTask ft2 = new FutureTask<>(mc); //创建线程对象 Thread t1 = new Thread(ft1); Thread t2 = new Thread(ft2); //设置名字 t1.setName("抽奖箱1"); t2.setName("抽奖箱2"); //开启线程 t1.start(); t2.start(); Integer max1 = ft1.get(); Integer max2 = ft2.get(); System.out.println(max1); System.out.println(max2); } }