Rumah > Soal Jawab > teks badan
Saya tahu bahawa ArrayList ialah kelas tidak selamat benang dan tidak boleh terus menambah() dan mengeluarkan() dalam situasi berbilang benang, tetapi bolehkah saya menggunakan kaedah set(int index, E element)?
List<T> records = InstanceUtil.newArrayList();
for (int i = 0; i < ids.getRecords().size(); i++) {
records.add(null);
}
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < ids.getRecords().size(); i++) {
final int index = i;
executorService.execute(() -> records.set(index, queryById(ids.getRecords().get(index))));
}
阿神2017-05-27 17:42:40
Keselamatan bukan benang bermakna semua operasi Senarai tidak dikunci. Jadi anda perlu mengawal kunci dalam utas perniagaan anda sendiri.
为情所困2017-05-27 17:42:40
Melihat logik ini, setiap nilai indeks hanya boleh diakses (diberikan) oleh satu utas, dan tiada akses berbilang benang kepada indeks yang sama.