欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用java實現(xiàn)兩個線程交替打印的多種方法-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)公司云計算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、香港機(jī)房服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名與空間、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

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

實現(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實現(xiàn)兩個線程交替打印的多種方法

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

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

package com.study.pattern;


import java.util.concurrent.LinkedTransferQueue;

public class Demo3 {
    private static LinkedTransferQueue<Character> linkedC = new LinkedTransferQueue<Character>();
    private static LinkedTransferQueue<Character> linkedN = new LinkedTransferQueue<Character>();
    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實現(xiàn)兩個線程交替打印的多種方法

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

實現(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實現(xiàn)兩個線程交替打印的多種方法

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

實現(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實現(xiàn)兩個線程交替打印的多種方法

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

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:使用java實現(xiàn)兩個線程交替打印的多種方法-創(chuàng)新互聯(lián)
文章位置:http://www.aaarwkj.com/article48/gijep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、營銷型網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)定制開發(fā)、商城網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
av免费观看日韩永久| 久久精品女人天堂av| 亚洲欧美国产日韩天堂区| 亚洲天堂福利视频网站| 中文字幕五月久久婷热| 国产欧美日本精品视频| 久久久久久这里都是精品| av亚洲天堂免费观看| 日本一区二区在线观看视频| 日韩欧美一区二区狠狠插| 久久精品国产亚洲av麻| 偷拍福利视频一区二区三区| 亚洲日本香蕉视频观看视频| 中文字幕精品一区二区三区视频| 国产av剧情精品亚洲| 日本一二不卡高清在线视频| 女厕所偷拍一区二区三区| 亚洲视频欧美视频自拍偷拍| 麻豆视频国产一区二区| 久久综合午夜福利视频| 久久亚洲女同第一区综合| 午夜在线观看视频免费| 亚洲一级特黄大片在线观看| 欧美日韩国产一区二区三区在线观看| 日本精彩视频一区二区| 久久久久久这里都是精品| 亚洲日本欧美一区二区| 亚洲国产精品欧美激情| 成年女人毛片免费观看不卡| 青青草免费在线播放视频网站| 亚洲精品一区二区三区色| 91免费看片在线观看| 国产成人+亚洲欧洲综合| 亚洲中少妇久久中文字幕| 真做的欧美三级在线观看| 亚洲人成伊人久久成| 日日躁夜夜躁狠狠躁黑人| 99麻豆久久久精品国产| 麻豆视频在线观看传媒| 亚洲一二三无人区是什么| 粉嫩在线一区二区懂色|