亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

基于java中BlockingQueue的使用介紹

2019-11-26 16:10:57
字體:
來源:轉載
供稿:網友
      最近在維護一個java工程,在群里面也就聊起來java的優劣!無奈一些Java的終極粉絲,總是號稱性能已經不必C++差,并且很多標準類庫都是大師級的人寫的,如何如何穩定等等。索性就認真研究一番,他們給我的一項說明就是,在線程之間投遞消息,用java已經封裝好的BlockingQueue,就足夠用了。

      既然足夠用那就寫代碼測試嘍,簡簡單單寫一個小程序做了一番測試:
復制代碼 代碼如下:

//默認包
import java.util.concurrent.*;

import base.MyRunnable;

public class Test
{
    public static void main(String[] args)
    {
        BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>();
        java.lang.Runnable r = new MyRunnable(queue);
        Thread t = new Thread(r);
        t.start();

        while(true)
        {
            try
            {
                while(true)
                {
                    for(int i =0;i < 10000;i++)
                    {
                        queue.offer(i);
                    }
                }
            }
            catch ( Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}

 
//需要添加的包
package base;

import java.lang.Runnable;
import java.util.concurrent.*;
import java.util.*;

public class MyRunnable implements Runnable
{
    public MyRunnable(BlockingQueue<Integer> queue)
    {
        this.queue = queue;
    }
    public void run()
    {
        Date d = new Date();
        long starttime = d.getTime();
        System.err.println(starttime);
        int count = 0;
        while(true)
        {
            try
            {
                Integer i = this.queue.poll();
                if(i != null)
                {
                    count ++;
                }
                if(count == 100000)
                {
                    Date e = new Date();
                    long endtime = e.getTime();
                    System.err.println(count);
                    System.err.println(endtime);
                    System.err.print(endtime - starttime);
                    break;
                }

            }
            catch (Exception e)
            {

            }
        }
    }
    private BlockingQueue<Integer> queue;
}

         傳遞十萬條數據,在我的測試機上面,大概需要50ms左右,倒是還可以!索性就看了一下BlockingQueue的底層實現

 我在上面的測試代碼中使用的offer 和 poll,就看看這兩個實現函數吧,首先是offer
復制代碼 代碼如下:

public E poll() {
        final AtomicInteger count = this.count;
        if (count.get() == 0)
            return null;
        E x = null;
        int c = -1;
        final ReentrantLock takeLock = this.takeLock;
        takeLock.lock();
        try {
            if (count.get() > 0) {
                x = extract();
                c = count.getAndDecrement();
                if (c > 1)
                    notEmpty.signal();
            }
        } finally {
            takeLock.unlock();
        }
        if (c == capacity)
            signalNotFull();
        return x;
    }

      和一般的同步線程類似,只是多加了一個signal,在學習unix環境高級編程時候,看到條件變量用于線程之間的同步,可以實現線程以競爭的方式實現同步!
poll函數的實現也是類似!
復制代碼 代碼如下:

public boolean offer(E e) {
        if (e == null) throw new NullPointerException();
        final AtomicInteger count = this.count;
        if (count.get() == capacity)
            return false;
        int c = -1;
        final ReentrantLock putLock = this.putLock;
        putLock.lock();
        try {
            if (count.get() < capacity) {
                insert(e);
                c = count.getAndIncrement();
                if (c + 1 < capacity)
                    notFull.signal();
            }
        } finally {
            putLock.unlock();
        }
        if (c == 0)
            signalNotEmpty();
        return c >= 0;
    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线视频观看| 日韩不卡在线观看| 欧美精品少妇videofree| 在线观看日韩av| 欧美一区二区视频97| 国产精品第一区| 亚洲奶大毛多的老太婆| 亚洲色图17p| 久久亚洲一区二区三区四区五区高| 亚洲福利视频网| 中文欧美日本在线资源| 久久久精品视频在线观看| 97国产成人精品视频| 亚洲丁香久久久| 亚洲欧美制服另类日韩| 亚洲国产91精品在线观看| 黑人极品videos精品欧美裸| 亚洲天堂av女优| 91精品中文在线| 国产精品一区二区三区久久久| 国产伦精品一区二区三区精品视频| 欧美激情区在线播放| 欧美激情一区二区三级高清视频| 91国产在线精品| 国产欧美一区二区三区视频| 精品亚洲aⅴ在线观看| 丝袜一区二区三区| 国产精品草莓在线免费观看| 久久精品电影一区二区| 精品国产一区二区在线| 热草久综合在线| 亚洲第一区在线| 欧美最顶级的aⅴ艳星| 久久久久久国产精品久久| 中文亚洲视频在线| 98精品国产高清在线xxxx天堂| 国产精品视频999| 亚洲精品欧美极品| 欧美成人午夜激情| 成人有码在线播放| 欧美黑人xxxx| 亚洲视频电影图片偷拍一区| 亚洲va码欧洲m码| 欧美高清视频在线播放| 日韩精品在线观| 日韩精品免费一线在线观看| 国产精品99久久久久久人| 日韩成人av网址| 欧美综合激情网| 久久影院资源站| 日韩一区二区三区国产| 亚洲人在线观看| 欧美怡春院一区二区三区| 久久亚洲综合国产精品99麻豆精品福利| 91精品久久久久久久久久久| 亚洲丁香久久久| 国产精品极品美女在线观看免费| 精品一区二区三区四区在线| 日韩av综合网| 亚洲欧美在线x视频| 国产精品久久久久久久久男| 欧美精品久久久久久久免费观看| 精品亚洲一区二区三区四区五区| 日韩av在线一区| 中文字幕亚洲欧美日韩2019| 中文亚洲视频在线| 日韩av电影在线播放| 欧美精品在线看| 91精品视频免费观看| 精品欧美一区二区三区| 国产精品日韩久久久久| 国产精品自拍视频| 国产精品久久久久久久久男| 欧美精品成人91久久久久久久| 欧美性极品xxxx做受| 欧美小视频在线观看| 美女啪啪无遮挡免费久久网站| 国产日韩在线免费| 97国产精品免费视频| 日韩欧美国产视频| 久久天堂电影网| 精品国内自产拍在线观看| 亚洲日本欧美日韩高观看| 韩国日本不卡在线| 色诱女教师一区二区三区| 免费97视频在线精品国自产拍| 国产在线拍偷自揄拍精品| 在线视频日韩精品| 久久久精品影院| 亚洲精品在线观看www| 欧美日韩性生活视频| 亚洲欧美日韩精品| 国产精品久久97| 久久视频在线观看免费| 日韩日本欧美亚洲| 久久亚洲精品中文字幕冲田杏梨| 日韩精品视频在线观看免费| 91麻豆桃色免费看| 久久久久久久久久国产| 97香蕉久久夜色精品国产| 欧美久久精品午夜青青大伊人| 欧美日韩午夜激情| 国产精品欧美一区二区三区奶水| 国产一区玩具在线观看| 最近的2019中文字幕免费一页| 亚洲三级黄色在线观看| 亚洲国产精品成人一区二区| 尤物九九久久国产精品的分类| 日韩日本欧美亚洲| 国产精品一区二区久久久久| 亚洲精品国产精品乱码不99按摩| 亚洲老板91色精品久久| 色777狠狠综合秋免鲁丝| 亚洲人在线视频| 久久综合伊人77777尤物| 日韩免费看的电影电视剧大全| 成人av番号网| 久久久久国色av免费观看性色| 国产女人18毛片水18精品| 这里只有精品在线播放| 亚洲精品视频免费在线观看| 国产精品嫩草视频| 久久久久国色av免费观看性色| 日韩av有码在线| 国内精品视频一区| www.亚洲成人| 91精品国产高清自在线看超| 亚洲国产欧美在线成人app| 17婷婷久久www| 色综合视频一区中文字幕| 热久久99这里有精品| 中文字幕国产亚洲2019| 日韩精品在线播放| 亚洲精品美女久久久| 奇米影视亚洲狠狠色| 日韩亚洲欧美中文高清在线| 日韩视频免费在线观看| 奇米4444一区二区三区| 久久精品国产清自在天天线| 久久伊人91精品综合网站| 法国裸体一区二区| 国产综合福利在线| 成人性生交xxxxx网站| 欧美日韩国产第一页| 欧美成人第一页| 91chinesevideo永久地址| 色一情一乱一区二区| 国产欧美日韩综合精品| 欧美性资源免费| 亚洲最大福利视频| 欧美一区二区三区免费观看| 日韩一二三在线视频播| 最近的2019中文字幕免费一页| 国产日韩在线亚洲字幕中文| 精品视频偷偷看在线观看| 国产福利精品av综合导导航| 亚洲人成网7777777国产| 久久九九免费视频| 国产这里只有精品| 亚洲视频在线视频| 亚洲黄在线观看| 在线视频日韩精品| 色综合久久中文字幕综合网小说| 久久夜色精品亚洲噜噜国产mv|