Exchanger

作者: zzj0990 | 来源:发表于2021-01-06 00:06 被阅读0次

    用于两个线程之间进行交换数据。
    线程A执行到exchange(s)其阻塞住,并且把数据放置于格子1处;
    线程B执行到exchange(s)同样被阻塞住,并把数据放置于格式2处,进行数据交换。然后格子往下执行。
    使用场景:两个线程之间互相通信,双人游戏交换装备等

    import java.util.concurrent.Exchanger;
    public class T12_TestExchanger {
        static Exchanger<String> exchanger = new Exchanger<>();
        public static void main(String[] args) {
            new Thread(()->{
                String s = "T1";
                try {
                    s = exchanger.exchange(s);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + " " + s);
            }, "t1").start();
            new Thread(()->{
                String s = "T2";
                try {
                    s = exchanger.exchange(s);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + " " + s);
            }, "t2").start();
        }
    }
    执行结果:
    t2 T1
    t1 T2
    
    Process finished with exit code 0
    

    相关文章

      网友评论

          本文标题:Exchanger

          本文链接:https://www.haomeiwen.com/subject/hxnjoktx.html