竞争抢答
题目:实现一个竞拍抢答程序:要求设置三个抢答者美三个线程),而后同时发出抢答指令,抢答成功者给出成功提示,抢答者未成功者给出失败提示。
对于这一个多线程的操作由于里面需要牵扯到数据的返回问题,那么现在最好使用的 Callable.是比较方便的处理形式,代码如下:
public class RobThread {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyRobThread myRobThread = new MyRobThread();
FutureTask<String> task = new FutureTask<>(myRobThread);
new Thread(task, "抢答者A").start();
new Thread(task, "抢答者B").start();
new Thread(task, "抢答者C").start();
System.out.println(task.get());
}
}
class MyRobThread implements Callable<String> {
private boolean flag = false; // 抢答处理
@Override
public String call() throws Exception {
synchronized (this) {
if (!flag) {
flag = true;
return Thread.currentThread().getName() + " - 抢答成功" ;
} else {
return Thread.currentThread().getName() + " - 抢答失败" ;
}
}
}
}