开发者学堂课程【Java 高级编程:竞争抢答】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/301
竞争抢答
多线程案例分析三
题目:实现一个竞拍抢答程序:要求设置三个抢答者美三个线程),而后同时发出抢答指令,抢答成功者给出成功提示,抢答者未成功者给出失败提示。
对于这一个多线程的操作由于里面需要牵扯到数据的返回问题,那么现在最好使用的 Callable.是比较方便的处理形式,代码如下:
package cn. mldn. demo ; .
import java.util. concurrent. Callable;
import java.util. concurrent. FutureTask ;
public class ThreadDemo{
public static void main(String[] args) throws Exception {
MyThread mt = new MyThread() ;
FutureTask<String> task = new FutureTask<String>(mt);
new Thread(task, "竞赛者A").start();
new Thread(task, "竞赛者B").start();
new Thread(task, "竞赛者C").start();
system.out.println(taskA.get());
system.out.println(taskB.get());
System.out.print1n(taskc.get());
class MyThread implements Callable<String> {
private boolean flag = false ; //抢答处理
@Override
public String cal1() throws Exception {
synchronized(this) // 数据同步
if (this.flag == false) {//抢答成功
this.flag = true ;
return Thread . currentThread().getName() + "抢答成功!";
else {
return Thread . currentThread().getName() + "抢答失败!";