1. 程式人生 > >ArrayMap java.lang.ArrayIndexOutOfBoundsException

ArrayMap java.lang.ArrayIndexOutOfBoundsException

錯誤堆疊:

java.lang.ArrayIndexOutOfBoundsException: length=0; index=1
        at android.support.v4.util.SimpleArrayMap.indexOf(SimpleArrayMap.java:83)
        at android.support.v4.util.SimpleArrayMap.put(SimpleArrayMap.java:381)

示例錯誤程式碼:

final ArrayMap testArrayMap = new ArrayMap();

        new  Thread("執行緒1"){
            @Override
            public void run() {
                super.run();
                while (true){
                    testArrayMap.put("aaa","fffff");
                }
            }

        }.start();

        new  Thread("執行緒2"){
            @Override
            public void run() {
                super.run();
                while (true){
                    testArrayMap.clear();
                }
            }

        }.start();

錯誤原因:
ArrayMap 不支援多行程,請在一個執行緒裡面使用。不然會導致陣列越界。如果想在多執行緒裡面使用,請使用HasTable。

google 的 ArrayMap 本身就沒有支援多執行緒,在最新的support 包裡面,如果你還多執行緒使用ArrayMap,就會throw CME (ConcurrentModificationException)