Javaのマルチスレッド6:3例マルチスレッドの分析 - 競争の回答

記事のソースhttps://www.jianshu.com/p/e73cf865fc2d

記事対応するビデオソース:https://developer.aliyun.com/course/1012?spm=5176.10731542.0.0.6ef2d290hxQ4g0

3レスポンダの(3つのスレッド)を設計し、同じ時間の答えでコマンドを発行するために、解答の受賞者がプロンプトの成功ではなく、プロンプト回答勝者を与えるために失敗を与える:入札レスポンダプログラムを設計します。
  このマルチスレッド動作のために、データは、好ましくは、呼び出し可能なを使用して実装されたリターンに関連するからです。

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) {//数据同步
            if (this.flag == false) {//抢答成功
                this.flag = true;
                return Thread.currentThread().getName() + "抢答成功!";
            } else {
                return Thread.currentThread().getName() + "抢答失败!";
            }
        }
    }
}
公開された52元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/YKWNDY/article/details/104955593