国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java vector的多線程安全是否有用

NervosNetwork / 2432人閱讀

摘要:如有不對(duì)的地方,請(qǐng)多多指正的使用主要有如下兩種場(chǎng)景所謂的多線程安全,只是針對(duì)單純地調(diào)用某個(gè)方法它是有同步機(jī)制的。的多線程安全,在組合操作時(shí)不是線程安全的。

在網(wǎng)上搜了不少文章,發(fā)現(xiàn)有不少?zèng)]講清楚的,也有不少好文,本文希望更易懂地描述該問題。如有不對(duì)的地方,請(qǐng)多多指正~~

vector的使用主要有如下兩種場(chǎng)景:
(1)vector所謂的多線程安全,只是針對(duì)單純地調(diào)用某個(gè)方法它是有同步機(jī)制的。如add,多個(gè)線程都在對(duì)同一個(gè)容器add元素,vector能夠保證最后總數(shù)是正確的,而ArrayList沒有同步機(jī)制,就無法保證。
(2)vector的多線程安全,在組合操作時(shí)不是線程安全的。比如一個(gè)線程先調(diào)用vector的size方法得到有10個(gè)元素,再調(diào)用get(9)方法獲取最后一個(gè)元素,而另一個(gè)線程調(diào)用remove(9)方法正好刪除了這個(gè)元素,那第一個(gè)線程就會(huì)拋越界異常。

總結(jié):
(1)在需要對(duì)容器進(jìn)行組合操作時(shí),vector不適用(需要自己用synchronized將組合操作進(jìn)行同步);
(2)僅在上述第一種場(chǎng)景時(shí),才需要使用vector

public class TestMultiThread {

private static Vector vec = new Vector();
private static List lst = new ArrayList();

public void f() {
    TestThread testThread1 = new TestThread();
    TestThread testThread2 = new TestThread();
    Thread thread1 = new Thread(testThread1);
    Thread thread2 = new Thread(testThread2);
    thread1.start();
    thread2.start();
}

public static void main(String[] args) {
    TestMultiThread testMultiThread = new TestMultiThread();
    testMultiThread.f();
    
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("vec size is " + vec.size());
    System.out.println("lst size is " + lst.size());

}

private class TestThread implements Runnable {

    @Override
    public void run() {
        for (int i = 0; i < 1000; ++i) {
            vec.add(i);
            lst.add(i);
        }
    }
}

}

如上程序運(yùn)行結(jié)果:
vec size is 2000
lst size is 1999

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/67344.html

相關(guān)文章

  • java vector的多線程安全是否有用

    摘要:如有不對(duì)的地方,請(qǐng)多多指正的使用主要有如下兩種場(chǎng)景所謂的多線程安全,只是針對(duì)單純地調(diào)用某個(gè)方法它是有同步機(jī)制的。的多線程安全,在組合操作時(shí)不是線程安全的。 在網(wǎng)上搜了不少文章,發(fā)現(xiàn)有不少?zèng)]講清楚的,也有不少好文,本文希望更易懂地描述該問題。如有不對(duì)的地方,請(qǐng)多多指正~~ vector的使用主要有如下兩種場(chǎng)景:(1)vector所謂的多線程安全,只是針對(duì)單純地調(diào)用某個(gè)方法它是有同步機(jī)制的...

    NicolasHe 評(píng)論0 收藏0
  • 40道阿里巴巴JAVA研發(fā)崗多線程面試題詳解,你能答出多少

    摘要:但是單核我們還是要應(yīng)用多線程,就是為了防止阻塞。多線程可以防止這個(gè)問題,多條線程同時(shí)運(yùn)行,哪怕一條線程的代碼執(zhí)行讀取數(shù)據(jù)阻塞,也不會(huì)影響其它任務(wù)的執(zhí)行。 1、多線程有什么用?一個(gè)可能在很多人看來很扯淡的一個(gè)問題:我會(huì)用多線程就好了,還管它有什么用?在我看來,這個(gè)回答更扯淡。所謂知其然知其所以然,會(huì)用只是知其然,為什么用才是知其所以然,只有達(dá)到知其然知其所以然的程度才可以說是把一個(gè)知識(shí)點(diǎn)...

    lpjustdoit 評(píng)論0 收藏0
  • 出場(chǎng)率比較高的一道多線程安全面試題

    摘要:程序正常運(yùn)行,輸出了預(yù)期容量的大小這是正常運(yùn)行結(jié)果,未發(fā)生多線程安全問題,但這是不確定性的,不是每次都會(huì)達(dá)到正常預(yù)期的。另外,像等都有類似多線程安全問題,在多線程并發(fā)環(huán)境下避免使用這種集合。 這個(gè)問題是 Java 程序員面試經(jīng)常會(huì)遇到的吧。 工作一兩年的應(yīng)該都知道 ArrayList 是線程不安全的,要使用線程安全的就使用 Vector,這也是各種 Java 面試寶典里面所提及的,可能...

    xiyang 評(píng)論0 收藏0
  • Java面試題

    摘要:近段時(shí)間在準(zhǔn)備實(shí)習(xí)的面試,在網(wǎng)上看到一份面試題,就慢慢試著做,爭(zhēng)取每天積累一點(diǎn)點(diǎn)。現(xiàn)在每天給自己在面試題編寫的任務(wù)是題,有時(shí)候忙起來可能就沒有時(shí)間寫了,但是爭(zhēng)取日更,即使當(dāng)天沒更也會(huì)在之后的更新補(bǔ)上。 ????近段時(shí)間在準(zhǔn)備實(shí)習(xí)的面試,在網(wǎng)上看到一份面試題,就慢慢試著做,爭(zhēng)取每天積累一點(diǎn)點(diǎn)。????暫時(shí)手頭上的面試題只有一份,題量還是挺大的,有208題,所以可能講的不是很詳細(xì),只是我自...

    OnlyMyRailgun 評(píng)論0 收藏0
  • 通過面試題,讓我們來了解Collection

    摘要:說一說迭代器通過集合對(duì)象獲取其對(duì)應(yīng)的對(duì)象判斷是否存在下一個(gè)元素取出該元素并將迭代器對(duì)象指向下一個(gè)元素取出元素的方式迭代器。對(duì)于使用容器者而言,具體的實(shí)現(xiàn)不重要,只要通過容器獲取到該實(shí)現(xiàn)的迭代器的對(duì)象即可,也就是方法。 前言 歡迎關(guān)注微信公眾號(hào):Coder編程獲取最新原創(chuàng)技術(shù)文章和相關(guān)免費(fèi)學(xué)習(xí)資料,隨時(shí)隨地學(xué)習(xí)技術(shù)知識(shí)!** 本章主要介紹Collection集合相關(guān)知識(shí),結(jié)合面試中會(huì)提到...

    HelKyle 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<