用多线程完成一个小题目(续)
2021-05-01 10:27
                         标签:main   通过   load   void   com   over   输出   rri   rup    接着上次的来讲,就是用两个线程,输出1a2b3c4d5e ... 又发现了一种新的实现方式,相对来说也更简单点。 主要是通过LockSupport来实现,话不多说,上代码: 输出结果:     通过LockSupport的park和unpark来控制线程的通信,相对来说说更简单直观点,后续还有更有趣的方式也可以放上来,以此记录下。 用多线程完成一个小题目(续) 标签:main   通过   load   void   com   over   输出   rri   rup    原文地址:https://www.cnblogs.com/xzshare/p/13220833.htmlpublic class CommunicationC {
    static char[] num = {‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘};
    static char[] chars = {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘};
    boolean flag = true;
    ThreadOne threadOne = new ThreadOne();
    ThreadTwo threadTwo = new ThreadTwo();
    public static void main(String[] args) {
        for (int i = 0; i ) {
            new CommunicationC().run();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public void run() {
        threadOne.start();
        threadTwo.start();
    }
    class ThreadOne extends Thread {
        @Override
        public void run() {
            for (char i : num) {
                if (flag) {
                    System.out.print(i);
                    flag = false;
                    LockSupport.unpark(threadTwo);
                    LockSupport.park();
                }
            }
        }
    }
    class ThreadTwo extends Thread {
        @Override
        public void run() {
            for (char i : chars) {
                LockSupport.park();
                if (!flag) {
                    System.out.print(i);
                    flag = true;
                    LockSupport.unpark(threadOne);
                }
            }
        }
    }
}

下一篇:数组方法