java - 多线程iterator修改ArrayList为何没有抛出ConcurrentModificationException异常?
迷茫
迷茫 2017-04-18 10:41:42
0
3
519
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(3)
左手右手慢动作

ArrayList sememangnya tidak selamat untuk thread Anda boleh mencubanya dengan Senarai yang dikembalikan oleh Collections.synchronizedList()

迷茫

Dalam contoh ini, dua kes ArrayList dan CopyOnWriteArrayList diuji masing-masing. ArrayList akan menjana acara cepat gagal, tetapi CopyOnWriteArrayList tidak akan menjana acara cepat gagal.

Apabila menggunakan ArrayList, acara cepat gagal akan dihasilkan dan pengecualian ConcurrentModificationException akan dilemparkan adalah seperti berikut:

private static List<String> list = new ArrayList<String>();

Apabila menggunakan CopyOnWriteArrayList, tiada peristiwa cepat gagal akan dihasilkan;

private static List<String> list = new CopyOnWriteArrayList<String>();
迷茫

Jika ia ditetapkan kepada 100000000, pengecualian akan dilemparkan. . .

Gunakan CopyOnWriteArrayList atau ThreadLocal untuk meletakkan ArrayList dalam berbilang urutan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!