#题目为“同时发出指令”,故应用同步线程来解决问题。
package T3;
/*
* 3、实现一个竞拍抢答程序:要求设置3个抢答者(3个线程),而后同时发出抢答指令,并为抢答成功者给出成功提示,为未抢答成功者给出失败提示。
*/
public class T3 {
public static void main(String[] args) {
Info info = new Info();
AnswerGame am1 = new AnswerGame(info);
Thread a1 = new Thread(am1,"抢答者1");
Thread a2 = new Thread(am1,"抢答者2");
Thread a3 = new Thread(am1,"抢答者3");
a1.start();
a2.start();
a3.start();
}
}
class Info{
private boolean flag = true;
public synchronized void answerMember(String name) {
synchronized(this) {
if(this.flag) {
this.flag = false;
System.out.println(Thread.currentThread().getName()+"抢答成功!");
}else {
System.out.println(Thread.currentThread().getName()+"抢答失败!");
}
}
}
}
class AnswerGame implements Runnable{
private Info info;
private String name;
public AnswerGame(Info info) {
this.info = info;
}
public void run() {
this.info.answerMember(name);
}
}
运行结果:
所得结果的抢答者顺序可能不同。
如: