アートのJava並行プログラミング(17)交換

交換は、スレッド間でデータを交換します

交換機(交換機)は、スレッド間のコラボレーションのためのクラスツールです。スレッド間でデータを交換するための交換。なお、この同期点において、2つのスレッドが相互にデータを交換することができ、同期点を提供します。交換データの交換方法にこれら2つのスレッドが、第二のスレッドを待っている最初のスレッドが交換を実行する場合()メソッドは、また、2つのスレッドが同期点に到達したときに、これら2つのスレッドの交換方法を実行しますデータは、互いにデータを生成した。この糸を通すこと、交換することができます。

シナリオ

交換器は、遺伝的アルゴリズムを使用することができ、遺伝的アルゴリズムは、チームメイトとして2人を選出した、この時間は2は、データを交換し、2つのクロス交配結果を描かれた規則を使用します。交換器は、例えば、私たちは、二人の男は両方のExcelをロードするために、システムがニーズをし、Excelに入力されたAB香港のエントリを、使用していた人工的な手段によって回避ミスに順に電子バンキングへの水の侵入を、紙バンクの水が必要になります、プルーフリーディングのために使用することができます、同じエントリかどうかを確認するために、校正と2つのExcelデータ。

public class ExchangerTest {
    private static final Exchanger<String> exgr = new Exchanger<String>();
    private static Executor ServicethreadPool = Executors.newFixedThreadPool(2);

    public static void main(String[] args) {
        threadPool.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    String A = "银行流水A"; // A录入银行流水数据 
                    exgr.exchange(A);
                } catch (InterruptedException e) {
                }
            }
        });
        threadPool.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    String B = "银行流水B"; // B录入银行流水数据 
                    String A = exgr.exchange("B");
                    System.out.println("A和B数据是否一致:" + A.equals(B) + ",A录入的是:"
                            + A + ",B录入是:" + B);
                } catch (InterruptedException e) {
                }
            }
        });
        threadPool.shutdown();
    }
}

2つのスレッドが交換なし()メソッドが実行している場合、それはあなたが待機最大待機を設定エクスチェンジ(VのX、longtimeout、TimeUnitでユニット)を使用することができます避けるために、発生する特別の事情がある懸念している場合は、長い時間を待たなければなりません。

公開された24元の記事 ウォンの賞賛1 ビュー534

おすすめ

転載: blog.csdn.net/qq_45366515/article/details/105267221