多線程案例分析三:競爭搶答

??設(shè)計一個競拍搶答程序:要求設(shè)計三個搶答者(三個線程),而后同時發(fā)出搶答指令,搶答成功者給出成功提示,未搶答成功者給出失敗提示。
??對于這個多線程操作,由于里面涉及到數(shù)據(jù)返回問題,最好使用Callable實現(xiàn)。

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> taskA = new FutureTask(mt);
        FutureTask<String> taskB = new FutureTask(mt);
        FutureTask<String> taskC = new FutureTask(mt);
        new Thread(taskA, "A").start();
        new Thread(taskB, "B").start();
        new Thread(taskC, "C").start();
        System.out.println(taskA.get());
        System.out.println(taskB.get());
        System.out.println(taskC.get());
    }
}
class MyThread implements Callable<String> {
    private boolean flag = false;//搶到處理
    @Override
    public String call() throws Exception {
        synchronized (this) {//數(shù)據(jù)同步
            if (this.flag == false) {//搶答成功
                this.flag = true;
                return Thread.currentThread().getName() + "搶答成功!";
            } else {
                return Thread.currentThread().getName() + "搶答失敗!";
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??一個任務(wù)通常就是一個程序,每個運行中的程序就是一個進程。當(dāng)一個程序運行時,內(nèi)部可能包含了多個順序執(zhí)行流,每個順...
    OmaiMoon閱讀 1,809評論 0 12
  • 線程池ThreadPoolExecutor corepoolsize:核心池的大小,默認情況下,在創(chuàng)建了線程池之后...
    irckwk1閱讀 874評論 0 0
  • Java-Review-Note——4.多線程 標(biāo)簽: JavaStudy PS:本來是分開三篇的,后來想想還是整...
    coder_pig閱讀 1,773評論 2 17
  • 1、多線程有什么用? 一個可能在很多人看來很扯淡的一個問題:我會用多線程就好了,還管它有什么用?在我看來,這個回答...
    高級java架構(gòu)師閱讀 917評論 1 9
  • 一百年后的愿望 還是看清
    風(fēng)鳴心會閱讀 208評論 0 8

友情鏈接更多精彩內(nèi)容