老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法

如何使用java實(shí)現(xiàn)兩個(gè)線程交替打印?相信大部分人都不太了解,今天小編為了讓大家更加了解兩個(gè)線程交替打印是如何實(shí)現(xiàn)的,給大家總結(jié)了以下內(nèi)容,跟隨小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的句容網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

使用ReentrantLock實(shí)現(xiàn)兩個(gè)線程交替打印

實(shí)現(xiàn)字母在前數(shù)字在后

package com.study.pattern;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Demo2 {
    private static Lock lock = new ReentrantLock();
    private static Condition c1 = lock.newCondition();
    private static Condition c2 = lock.newCondition();
    private static CountDownLatch count = new CountDownLatch(1);
    public static void main(String[] args) {
       String c = "ABCDEFGHI";
       char[] ca = c.toCharArray();
       String n = "123456789";
       char[] na = n.toCharArray();
       Thread t1 = new Thread(() -> {
           try {
               lock.lock();
               count.countDown();
               for(char caa : ca) {
                   c1.signal();
                   System.out.print(caa);
                   c2.await();
               }
               c1.signal();
           } catch (InterruptedException e) {
               e.printStackTrace();
           } finally {
               lock.unlock();
           }
       });
       Thread t2 = new Thread(() -> {
           try {
               count.await();
               lock.lock();
               for(char naa : na) {
                   c2.signal();
                   System.out.print(naa);
                   c1.await();
               }
               c2.signal();
           } catch (InterruptedException e) {
               e.printStackTrace();
           } finally {
               lock.unlock();
           }
       });
       t1.start();
       t2.start();
    }
}

最后輸出結(jié)果:

使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法

使用LinkedTransferQueue實(shí)現(xiàn)兩個(gè)線程交替打印

實(shí)現(xiàn)字母在前數(shù)字在后

package com.study.pattern;


import java.util.concurrent.LinkedTransferQueue;

public class Demo3 {
    private static LinkedTransferQueue linkedC = new LinkedTransferQueue();
    private static LinkedTransferQueue linkedN = new LinkedTransferQueue();
    public static void main(String[] args) {
        String c = "ABCDEFGHI";
        char[] ca = c.toCharArray();
        String n = "123456789";
        char[] na = n.toCharArray();
        Thread t1 = new Thread(() -> {
            for(char caa : ca) {
                try {
                    linkedC.put(caa);
                    char a = linkedN.take();
                    System.out.print(a);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        Thread t2 = new Thread(() -> {
            for(char naa : na) {
                try {
                    char b = linkedC.take();
                    System.out.print(b);
                    linkedN.put(naa);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t1.start();
        t2.start();

    }
}

輸出結(jié)果:

使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法

使用synchronized實(shí)現(xiàn)兩個(gè)線程交替打印

實(shí)現(xiàn)字母在前數(shù)字在后

package com.study.pattern;


import java.util.concurrent.CountDownLatch;

public class Demo4 {
    private static CountDownLatch count = new CountDownLatch(1);
    public static void main(String[] args) {
        String c = "ABCDEFGHI";
        char[] ca = c.toCharArray();
        String n = "123456789";
        char[] na = n.toCharArray();
        Object lock = new Object();
        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                count.countDown();
                for(char caa : ca) {
                    System.out.print(caa);
                    lock.notify();
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                lock.notify();
            }
        });
        Thread t2 = new Thread(() -> {
            try {
                count.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (lock) {
                for(char naa : na) {
                    System.out.print(naa);
                    lock.notify();
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                lock.notify();
            }
        });
        t1.start();
        t2.start();
    }
}

輸出結(jié)果:

使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法

使用LockSupport實(shí)現(xiàn)兩個(gè)線程交替打印

實(shí)現(xiàn)字母在前數(shù)字在后

package com.study.pattern;


import java.util.concurrent.locks.LockSupport;

public class Demo5 {
    private static Thread t1;
    private static Thread t2;
    public static void main(String[] args) {
        String c = "ABCDEFGHI";
        char[] ca = c.toCharArray();
        String n = "123456789";
        char[] na = n.toCharArray();
        t1 = new Thread(() -> {
            for(char caa : ca) {
                System.out.print(caa);
                LockSupport.unpark(t2);
                LockSupport.park();

            }
        });
        t2 = new Thread(() -> {
            for(char naa : na) {
                LockSupport.park();
                System.out.print(naa);
                LockSupport.unpark(t1);
            }
        });
        t1.start();
        t2.start();
    }
}

輸出結(jié)果:

使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法

看完上述內(nèi)容,你們對(duì)兩個(gè)線程交替打印的實(shí)現(xiàn)大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:使用java實(shí)現(xiàn)兩個(gè)線程交替打印的多種方法
新聞來源:http://www.xueling.net.cn/article/gdpjhi.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 无码午夜成人1000部免费视频 | 久久久久亚洲精品男人的天堂 | 中文亚洲av片不卡在线观看 | 久久久久国产精品熟女影院 | 国产精品国产三级国产普通话三级 | 国产精品18久久久久久久 | 激情亚洲网 | 99久33精品字幕 | 国产色婷婷精品综合在线 | 亚洲sss综合天堂久久 | 欧美一级片在线观看 | 亚洲成av人片在线观看无 | 东北老女人高潮疯狂过瘾对白 | 97国产小视频 | 亚洲在线视频网站 | 日韩一级 | 国产精品夜夜春夜夜爽久久小 | 亚洲va中文字幕无码久久不卡 | 成人av在线网站 | 国产精品成人av禁果av | av久热| 国产av无码专区亚洲awww | 日韩午夜伦伦午夜伦老司机 | 国产美女撒尿一区二区 | 曰韩中文字幕 | 精品日本一区二区三区免费 | 99久久一区二区三区 | 日日爱666 | 放荡开放的人妻穿丁字裤凹 | 69日本xxxxxxxxx59 日日摸日日操 | aa级黄色毛片 | 亚洲三级中文字幕在线看 | 狠狠精品久久久无码中文字幕 | 色婷婷国产精品 | 国产乱妇乱子在线播放视频 | 日韩在线视频免费 | 太平公主作爱a级毛片 | 热久久91 | 免费看久久妇女高潮A | 亚洲在线综合 | 激情欧美一区二区三区精品 |