29.Java 集合线程安全(ArrayList 类线程安全问题处理方案、HashSet 、HashMap 类线程安全问题处理方案)
一、ArrayList 类线程安全问题
1、概述
- ArrayList 类存在线程安全问题
2、异常演示
- ListNoSafeTest.java,演示 ArrayList 类线程安全问题
package com.my.listsafe;import java.util.ArrayList;
import java.util.UUID;public class ListNoSafeTest {public static void main(String[] args) {ArrayList<String> arrayList = new ArrayList<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {arrayList.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(arrayList);}, "" + i).start();}}
}
- 输出结果
[1004]
[1004, 38ac]
[1004, 38ac, 5f75]
[1004, 38ac, 5f75, b217]
[1004, 38ac, 5f75, b217, f5ea]
[1004, 38ac, 5f75, b217, f5ea, 3630]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf, c5a9]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf, c5a9, 633b]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf, c5a9, 633b, 8005]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf, c5a9, 633b, 8005, ce90]
[1004, 38ac, 5f75, b217, f5ea, 3630, 0a24, 543f, d11c, 870e, 898d, 6da5, c6c8, d542, eb53, 7a5a, 5b5b, ef4d, 2a53, 079a, d1fd, e41b, d7aa, d8c1, 0439, e9f7, 73c8, 8fbb, 8a5d, 8aa2, 096a, c805, 8545, cc7e, 5f3a, feae, 2678, 498a, 2912, 43ee, f2a0, d084, a678, 9b78, f9b5, a581, 4b44, 2d7f, 1e8a, f8bb, b50c, 0891, 165f, c7d2, 1e3c, 9940, 8451, 33a1, 0c0c, 3fda, c2ed, 6afb, 2574, 9d0d, a186, 60c5, 6511, 3781, a371, c4bf, c5a9, 633b, 8005, ce90, 22e8]
Exception in thread "62" java.util.ConcurrentModificationExceptionat java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)at java.base/java.util.AbstractCollection.toString(AbstractCollection.java:456)at java.base/java.lang.String.valueOf(String.java:4218)at java.base/java.io.PrintStream.println(PrintStream.java:1047)at com.my.listsafe.ListNoSafeTest.lambda$main$0(ListNoSafeTest.java:13)at java.base/java.lang.Thread.run(Thread.java:833)
3、异常分析
- ArrayList 的 add 方法没有做同步处理
public boolean add(E e) {ensureCapacityInternal(size + 1); // Increments modCount!!elementData[size++] = e;return true;
}
二、ArrayList 类线程安全问题处理方案
1、Vector 类
(1)基本介绍
-
Vector 是矢量队列,是 JDK 1.0 版本添加的类,继承于 AbstractList 类,实现了 List、RandomAccess、Cloneable 接口
-
Vector 类继承了 AbstractList,实现了 List 接口,所以它是一个队列,支持相关的增删改查操作
-
Vector 类实现了 RandmoAccess 接口,提供了随机访问功能,RandmoAccess 接口是 Java 中用来被 List 实现类实现并为其提供快速访问功能的,在 Vector 中,可以通过元素的序号快速获取元素对象
-
Vector 类实现了 Cloneable 接口,实现了 clone 方法
(2)演示
- VectorTest 类
package com.my.listsafe;import java.util.UUID;
import java.util.Vector;public class VectorTest {public static void main(String[] args) {Vector<Object> vector = new Vector<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {vector.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(vector);}, "" + i).start();}}
}
(3)原理
Vector 类的 add 方法被 synchronized 关键字修饰
public synchronized boolean add(E e) {modCount++;ensureCapacityHelper(elementCount + 1);elementData[elementCount++] = e;return true;
}
2、Collections 的 synchronizedList 方法
(1)基本介绍
- Collections 的 synchronizedList 方法可以返回指定列表支持的同步列表
(2)演示
- SynchronizedListTest 类
package com.my.listsafe;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;public class SynchronizedListTest {public static void main(String[] args) {List<Object> list = Collections.synchronizedList(new ArrayList<>());for (int i = 1; i <= 30; i++) {new Thread(() -> {list.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(list);}, "" + i).start();}}
}
3、CopyOnWriteArrayList 类
(1)基本介绍
-
CopyOnWriteArrayList 类采用读写分离思想,通俗的理解是往一个容器添加元素的时,不直接往当前容器添加,而是先将当前容器进行复制,复制出一个新的容器,然后往新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器,这样做的好处是可以对容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素,读和写采用不同的容器
-
缺点是内存占用较大和数据不一致问题
(2)演示
- CopyOnWriteArrayListTest 类
package com.my.listsafe;import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;public class CopyOnWriteArrayListTest {public static void main(String[] args) {CopyOnWriteArrayList copyOnWriteArrayList = new CopyOnWriteArrayList();for (int i = 0; i < 30; i++) {new Thread(() -> {copyOnWriteArrayList.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(copyOnWriteArrayList);}, "" + i).start();}}
}
(3)原理
- CopyOnWriteArrayList 类 add 方法源码
public boolean add(E e) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();int len = elements.length;Object[] newElements = Arrays.copyOf(elements, len + 1);newElements[len] = e;setArray(newElements);return true;} finally {lock.unlock();}
}
三、HashSet 、HashMap 类线程安全问题
1、概述
- HashSet 、HashMap 类存在线程安全问题
2、异常演示
- HashSetNoSafeTest.java,演示 HashSet 类线程安全问题
package com.my.listsafe;import java.util.HashSet;
import java.util.UUID;public class HashSetNoSafeTest {public static void main(String[] args) {HashSet<Object> set = new HashSet<>();for (int i = 0; i < 50; i++) {new Thread(() -> {set.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(set);}, "" + i).start();}}
}
- 输出结果
[2a0f]
[0936, cd59, 2a0f]
[cd59, 2a0f]
[c3e9, 0936, cd59, 2a0f]
[4585, c3e9, 0936, cd59, 2a0f]
[fb57, 4585, c3e9, 0936, cd59, 2a0f]
[fb57, 4585, c3e9, 0936, cd59, e97e, 2a0f]
[fb57, 1425, 4585, c3e9, 0936, cd59, e97e, 2a0f]
[fb57, 1425, 4585, 98ad, c3e9, 0936, cd59, e97e, 2a0f]
[fb57, 1425, 4585, 98ad, c3e9, 1b52, 0936, cd59, e97e, 2a0f]
[fb57, 1425, 35a9, 4585, 98ad, c3e9, 1b52, 0936, cd59, e97e, 2a0f]
[fb57, 1425, 7bd4, 35a9, 4585, 98ad, c3e9, 1b52, 0936, cd59, e97e, 2a0f]
[25c7, 7bd4, 35a9, 4585, c3e9, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 2a0f]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 2a0f]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 37cb, 2a0f]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 37cb, 2a0f, 229b]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, 66f6, cd59, e97e, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, 35a9, e175, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, 35a9, 0bce, e175, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, dfd0, 35a9, 0bce, e175, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, dfd0, 35a9, 0bce, e175, 9535, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, dfd0, 35a9, 0bce, e175, 9535, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 7c30, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[25c7, 7bd4, dfd0, 35a9, 0bce, e175, 9535, 4585, c3e9, 66f6, cd59, e97e, c6e2, fb57, 1425, 7c30, b849, 98ad, 1b52, 0936, 214b, 37cb, 2a0f, 229b]
[7bd4, 35a9, 0bce, c3e9, 66f6, c6e2, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, b849, 1b52, 0936, 214b, 2a0f]
[7bd4, 35a9, 0bce, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, b849, 1b52, 0936, 214b, 2a0f]
[7bd4, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, b849, 1b52, 0936, 214b, 2a0f]
[7bd4, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, b849, 1b52, 0936, 214b, 9ed8, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, b849, 1b52, 0936, 214b, 9ed8, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 0936, 214b, 9ed8, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, 74a6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, 74a6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, 74a6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, 69f6, 74a6, c8e1, c6e2, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, 69f6, 74a6, c8e1, c6e2, 1ca6, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 69f6, 74a6, c8e1, c6e2, 1ca6, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 14ac, 5d61, 98ad, 37cb, 229b, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 14ac, 5d61, 98ad, d712, 37cb, 229b, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 14ac, 5d61, 98ad, d712, 37cb, 229b, dda2, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[e003, 7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 14ac, 5d61, 98ad, d712, 37cb, 229b, dda2, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[e003, 7bd4, d157, 35a9, 0bce, a088, c3e9, 66f6, b87e, e6c9, c2a6, 552c, 69f6, 74a6, c8e1, c6e2, a12e, 1ca6, 14ac, 5d61, f938, 98ad, d712, 37cb, 229b, dda2, 25c7, dfd0, c199, e175, 9535, 6df6, 4585, cd59, e97e, fb57, 1425, 2898, 7c30, 2235, b849, 1b52, 2a4f, 0936, 214b, 9ed8, 5943, 2a0f]
[e003, 7bd4, d157, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, cd59, a3d5, fb57, 2898, 7c30, 2a4f, 2a0f]
[e003, 7bd4, d157, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3ebf, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3ebf, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, 37cb, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, 37cb, bbc5, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fc79, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, 8f9e, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fc79, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, 3e7d, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, 8f9e, dfd0, c199, e175, 9535, 6df6, c270, cd59, a3d5, fc79, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, 3e7d, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, 8f9e, dfd0, c199, e175, 9535, 6df6, c270, 7ece, cd59, a3d5, fc79, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
[e003, 7bd4, d157, c2ff, 0bce, a088, dc6b, 8777, 3e7d, c3e9, b87e, 552c, 69f6, 74a6, 14ac, 01be, f938, 98ad, c9dc, d712, 229b, 3d0e, 25c7, 4585, e97e, 1425, 2235, b849, 52d6, abc7, 1b52, 0936, 214b, 9ed8, 5943, 1a72, 35a9, 66f6, e6c9, c2a6, fb8a, c94d, c8e1, c6e2, 3fdf, 3ebf, a12e, 1ca6, 5d61, ee72, 0bf7, 724f, 37cb, bbc5, 8e70, ce3c, dda2, 8f9e, dfd0, 6b3b, c199, e175, 9535, 6df6, c270, 7ece, cd59, a3d5, fc79, fb57, 2898, 7c30, ec64, 2a4f, 2a0f]
Exception in thread "70" java.util.ConcurrentModificationExceptionat java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1620)at java.base/java.util.AbstractCollection.toString(AbstractCollection.java:456)at java.base/java.lang.String.valueOf(String.java:4218)at java.base/java.io.PrintStream.println(PrintStream.java:1047)at com.my.listsafe.HashSetNoSafeTest.lambda$main$0(HashSetNoSafeTest.java:13)at java.base/java.lang.Thread.run(Thread.java:833)
- HashMapNoSafeTest.java,演示 HashMap 类线程安全问题
package com.my.listsafe;import java.util.HashMap;
import java.util.UUID;public class HashMapNoSafeTest {public static void main(String[] args) {HashMap<Object, Object> hashMap = new HashMap<>();for (int i = 0; i < 75; i++) {String s = String.valueOf(i);new Thread(() -> {hashMap.put(s, UUID.randomUUID().toString().substring(0, 4));System.out.println(hashMap);}, "" + i).start();}}
}
- 输出结果
{4=f5de}
{3=441a, 4=f5de}
{3=441a, 4=f5de, 5=67a9}
{2=7293, 3=441a, 4=f5de, 5=67a9}
{0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9}
{0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b}
{0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78}
{0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3}
{0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f}
{0=218a, 11=9548, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f}
{0=218a, 11=9548, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{0=218a, 11=9548, 12=d79d, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 10=5137, 21=7caf}
{11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 10=5137, 21=7caf}
{11=9548, 12=d79d, 23=bb19, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 10=5137, 21=7caf}
{11=9548, 22=8825, 12=d79d, 23=bb19, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 10=5137, 21=7caf}
{11=9548, 22=8825, 12=d79d, 23=bb19, 13=1f9d, 24=bd34, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 10=5137, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 29=2c46, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 10=5137, 32=dbef, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf}
{22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 24=bd34, 46=44ad, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 45=61c0, 24=bd34, 46=44ad, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 45=61c0, 24=bd34, 46=44ad, 25=64f0, 47=9fc7, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 45=61c0, 24=bd34, 46=44ad, 25=64f0, 47=9fc7, 26=f3c1, 48=8408, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{22=8825, 44=bed6, 23=bb19, 45=61c0, 24=bd34, 46=44ad, 25=64f0, 47=9fc7, 26=f3c1, 48=8408, 27=9ef2, 49=9a06, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 10=5137, 32=dbef, 11=9548, 12=d79d, 34=de5f, 13=1f9d, 35=372e, 14=0693, 36=50c6, 15=6ec2, 37=a463, 16=961b, 38=e20f, 17=079b, 39=810e, 18=0411, 19=1798, 0=218a, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 40=169b, 41=e33f, 20=be87, 42=bf19, 21=7caf, 43=ca52}
{44=bed6, 45=61c0, 46=44ad, 47=9fc7, 48=8408, 49=9a06, 10=5137, 11=9548, 12=d79d, 13=1f9d, 14=0693, 15=6ec2, 16=961b, 17=079b, 18=0411, 19=1798, 0=218a, 1=0dd1, 2=7293, 3=441a, 4=f5de, 5=67a9, 6=5c3b, 7=9f78, 8=e7b3, 9=f21f, 20=be87, 21=7caf, 22=8825, 23=bb19, 24=bd34, 25=64f0, 26=f3c1, 27=9ef2, 28=dc62, 29=2c46, 30=3ddc, 31=acbb, 32=dbef, 33=3d57, 34=de5f, 35=372e, 36=50c6, 37=a463, 38=e20f, 39=810e, 40=169b, 41=e33f, 42=bf19, 43=ca52}
Exception in thread "38" java.util.ConcurrentModificationExceptionat java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1630)at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1628)at java.base/java.util.AbstractMap.toString(AbstractMap.java:550)at java.base/java.lang.String.valueOf(String.java:4218)at java.base/java.io.PrintStream.println(PrintStream.java:1047)at com.my.listsafe.HashMapNoSafeTest.lambda$main$0(HashMapNoSafeTest.java:14)at java.base/java.lang.Thread.run(Thread.java:833)
Exception in thread "1" java.util.ConcurrentModificationExceptionat java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1630)at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1628)at java.base/java.util.AbstractMap.toString(AbstractMap.java:550)at java.base/java.lang.String.valueOf(String.java:4218)at java.base/java.io.PrintStream.println(PrintStream.java:1047)at com.my.listsafe.HashMapNoSafeTest.lambda$main$0(HashMapNoSafeTest.java:14)at java.base/java.lang.Thread.run(Thread.java:833)
四、HashSet 、HashMap 类线程安全问题处理方案
1、CopyOnWriteArraySet 类
(1)基本介绍
- CopyOnWriteArraySet 类采用读写分离思想,用于处理 HashSet 类线程安全问题
(2)演示
- CopyOnWriteArraySetTest 类
package com.my.listsafe;import java.util.UUID;
import java.util.concurrent.CopyOnWriteArraySet;public class CopyOnWriteArraySetTest {public static void main(String[] args) {CopyOnWriteArraySet<Object> copyOnWriteArraySet = new CopyOnWriteArraySet<>();for (int i = 0; i < 50; i++) {new Thread(() -> {copyOnWriteArraySet.add(UUID.randomUUID().toString().substring(0, 4));System.out.println(copyOnWriteArraySet);}, "" + i).start();}}
}
2、ConcurrentHashMap 类
(1)基本介绍
- ConcurrentHashMap 类用于处理 HashMap 类线程安全问题
(2)演示
- ConcurrentHashMapTest 类
package com.my.listsafe;import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;public class ConcurrentHashMapTest {public static void main(String[] args) {ConcurrentHashMap<Object, Object> concurrentHashMap = new ConcurrentHashMap<>();for (int i = 0; i < 75; i++) {String s = String.valueOf(i);new Thread(() -> {concurrentHashMap.put(s, UUID.randomUUID().toString().substring(0, 4));System.out.println(concurrentHashMap);}, "" + 1).start();}}
}
相关文章:
29.Java 集合线程安全(ArrayList 类线程安全问题处理方案、HashSet 、HashMap 类线程安全问题处理方案)
一、ArrayList 类线程安全问题 1、概述 ArrayList 类存在线程安全问题 2、异常演示 ListNoSafeTest.java,演示 ArrayList 类线程安全问题 package com.my.listsafe;import java.util.ArrayList; import java.util.UUID;public class ListNoSafeTest {public st…...
解锁企业数字化转型新力量:OpenCoze(开源扣子)
在当今数字化浪潮席卷之下,企业对于高效管理和协同运作的需求愈发迫切,而开源技术正逐渐成为众多企业破局的关键利器。今天,想给大家介绍一款极具潜力的开源项目 ——OpenCoze,中文名称 “开源扣子”。 一、OpenCoze 是什么&…...
Docker 使用Dockerfile创建镜像
创建并且生成镜像 在当前目录下创建一个名为Dockerfile文件 vi Dockerfile填入下面配置 # 使用 CentOS 作为基础镜像 FROM centos:7# 设置工作目录 WORKDIR /app# 复制项目文件到容器中 COPY bin/ /app/bin/ COPY config/ /app/config/ COPY lib/ /app/lib/ COPY plugin/ /a…...
linux网络 | https前置知识 | 数据加密与解密、数据摘要
前言:本节内容讲述https的相关内容。 https博主会着重讲解https如何让一个请求和一个响应能够安全的进行交互。 https博主将用两篇文章进行讲解。本篇是两篇中第一篇。会把http的安全问题引出来, 然后说一下https的基本解决方法。 下面废话不多说, 开始我…...
01 Oracle自学环境搭建(Windows系统)
1 Oracle12C安装 1.1 下载 官网地址:https://www.oracle.com/ 进入官网→Resource→Customer Downloads 如果没有登录,会提示登录后后才能下载 选择适合自己的版本(我电脑是Windows系统 64位) 选择需要的安装包进行下载 双击下载…...
负载均衡原理及算法
什么是负载均衡? 负载均衡 指的是将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力以及可靠性。负载均衡服务可以有由专门的软件或者硬件来完成,一般情况下,硬件的性能更好,软件的价格更便宜&#x…...
STM32第5章、IWDG
一、简介 IWDG:全称是Independent watchdog,即独立看门狗。本质上是一个能产生系统复位信号的计数器。 特性: 是一个递减计数器。 时钟信号由独立的RC振荡器提供,可在待机和停止模式下运行。 看门狗被激活后,当递减计…...
[python3]Uvicorn库
Uvicorn 是一个用于运行 ASGI(Asynchronous Server Gateway Interface)应用程序的轻量级服务器。ASGI 是 Python Web 应用程序接口的一种扩展,它不仅支持传统的同步 Web 请求处理,还支持异步请求处理、WebSockets 以及 HTTP/2。 h…...
openEuler 22.04使用yum源最快速度部署k8s 1.20集群
本文目的 openEuler的官方源里有kubernetes 1.20,使用yum源安装是最快部署一个k8s集群的办法 硬件环境 主机名系统架构ipmasteropenEuler release 22.03 (LTS-SP2)arm192.168.3.11edgeopenEuler release 22.03 (LTS-SP2)arm192.168.3.12deviceopenEuler release 22.…...
【深度学习】数据预处理
为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中,我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样,pan…...
Oracle:ORA-00904: “10“: 标识符无效报错详解
1.报错Oracle语句如下 SELECT YK_CKGY.ID,YK_CKGY.DJH,YK_CKGY.BLRQ,YK_CKGY.ZBRQ,YK_CKGY.SHRQ,YK_CKGY.YT,YK_CKGY.ZDR,YK_CKGY.SHR,YK_CKGY.BZ,YK_CKGY.JZRQ,YK_CKGY.ZT,YK_CKGY.CKLX,(case YK_CKGY.CKLXwhen 09 then药房调借when 02 then科室退药when 03 then损耗出库when…...
CentOS 7 下 Nginx 的详细安装与配置
1、安装方式 1.1、通过编译方式安装 下载Nginx1.16.1的安装包 https://nginx.org/download/nginx-1.16.1.tar.gz 下载后上传至/home目录下。 1.2、通过yum方式安装 这种方式安装更简单。 2、通过编译源码包安装Nginx 2.1、安装必要依赖 sudo yum -y install gcc gcc-c sudo…...
Vue.js:现代前端开发的灵活框架
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...
VideoPlayer插件的功能和用法
文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...
GPT-SoVITS学习01
1.什么是TTS TTS(Text-To-Speech)这是一种文字转语音的语音合成。类似的还有SVC(歌声转换)、SVS(歌声合成)等。 2.配置要求 GPT-SoVITS对电脑配置有较高的要求。 训练:对于Windows电脑&#…...
C语言程序环境和预处理详解
本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 程序的翻译环境和执行环…...
DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿
直接在客户端运行 SQL 语句和通过加载本地文件执行 SQL 语句可能会出现不同的性能表现,原因可能包括以下几点: 客户端资源使用: 当你在客户端界面直接输入和执行 SQL 语句时,客户端可能会消耗资源来维护用户界面、语法高亮、自动完…...
【Linux】5.Linux常见指令以及权限理解(3)
文章目录 3. Linux指令如何把自己的公网IP配置到XShell里面日志3.9 时间相关的指令3.10 Cal指令3.11 find指令:(灰常重要)3.12 grep指令3.13 zip/unzip指令:3.14 tar指令(重要):打包/解包&#…...
QT鼠标、键盘事件
一、鼠标 鼠标点击 mousePressEvent 鼠标释放 mouseReleaseEvent 鼠标移动 mouseMoveEvent 鼠标双击 mouseDoubleClickEvent 鼠标滚轮 QWheelEvent 二、键盘 键盘按下 keyPressEvent 键盘松开keyReleaseEvent 一、鼠标 #include <QMouseEvent> 鼠标点击 mouse…...
LabVIEW启动时Access Violation 0xC0000005错误
问题描述 在启动LabVIEW时,可能出现程序崩溃并提示以下错误:Error 0xC0000005 (Access Violation) Access Violation错误通常是由于权限不足、文件冲突或驱动问题引起的。以下是解决此问题的全面优化方案: 解决步骤 1. 以管理员身份运行…...
WPF中组件之间传递参数的方法研究
在 WPF (Windows Presentation Foundation) 中,组件(或称为控件)之间传递参数的方法有很多种。不同的传递方式适用于不同的应用场景,具体选择取决于应用需求、性能、可维护性等因素。以下是几种常见的传递参数的方法,并…...
本地大模型工具哪家强?对比Ollama、LocalLLM、LM Studio
前言 对于AIGC的初学者, 你一定想尝试在本地搭建一个私有的开源大模型,比如常见的chatglm、llama或者qwen。在实践过程你会发现,每个模型单独配置环境,下载模型文件,还要确保它们互不干扰。这不仅耗时耗力,…...
dify 常见问题总结 2025 持续更新
任何 Dify 问题评论区留言。 问题总结 Q:模型在回答时出现异常情况该如何处理? A: 可以通过记录异常情况并分析其原因来进行处理。通常可以调整提示词、重新训练模型或增加异常处理机制来改进模型的表现。 关键词:提示词、模型、…...
贪心算法笔记
贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...
切比雪夫插值
切比雪夫插值是一种基于切比雪夫节点的多项式插值方法,其优势是减少插值误差(特别是龙格现象:表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。 1. 切比雪夫节点 切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切…...
西电-神经网络基础与应用-复习笔记
此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义,生理学派,模拟神经计算。高度的并行、分布性,很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义,心理学派,基于符号…...
【面试题】简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势
云原生(Cloud Native) 定义:云原生是一种构建和运行应用程序的方法,旨在充分利用云计算的优势。它涵盖了一系列技术和理念,包括容器化、微服务架构、自动化部署与管理等。特点:云原生应用程序被设计为可弹性…...
Vue 3 Diff 算法过程及基本实现方式
Vue 3 的 Diff 算法 Vue 3 使用的是一种高效的 DOM Diff 算法,主要用于在虚拟 DOM 树发生变化时,计算最小的操作以更新真实 DOM。相比 Vue 2,Vue 3 的 Diff 算法做了很多优化。 Diff 算法的背景与目的 虚拟 DOM 树的对比:在 Vue…...
EasyCVR视频汇聚平台如何配置webrtc播放地址?
EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持多协议接入,能将接入到视频流转码为多格式进行分发,包括RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、W…...
PowerApps助力PowerBI实现数据写回
原文发布日期: 2019-08-01 06:03:50 0000 注:本文旨在介绍Power BI如何利用PowerApps实现用户在前端对数据源进行增删查改,关于此,你也可以在Google上找到更详细但较零散的资料 正文 在SSAS多维数据集中,开发者可以给数据开启&q…...
数据结构:DisjointSet
Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做,Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合,用来确定两个元素是否同属一个集合等,是效率最高的常见数据结构之一。 Wiki链接:https://en…...
React 元素渲染
React 元素渲染 React 是一个用于构建用户界面的 JavaScript 库,它允许开发人员创建大型应用程序,这些应用程序可以随着时间的推移而高效地更新和渲染。React 的核心概念之一是元素渲染,它描述了如何将 JavaScript 对象转换为 DOM࿰…...
【Leetcode 每日一题】3270. 求出数字答案
问题背景 给你三个 正 整数 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3。 数字 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3 的数字答案 k e y key key 是一个四位数,定义如下&…...
eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
ACL实验(Access Control List访问控制列表)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...
【git】-2 分支管理
目录 一、分支的概念 二、查看、创建、切换分支 1、查看分支-git branch 2、创建分支- git branch 分支名 3、切换分支- git checkout 分支名 三、git指针 -实现分支和版本间的切换 四、普通合并分支 git merge 文件名 五、冲突分支合并 【git】-初始gi…...
硬件设计-齐纳管
目录 摘要 详情 齐纳管的工作电流、 摘要 齐纳管(Zener Diode)是一种特殊的二极管,它能够在特定的反向电压下保持电流稳定。正常情况下,二极管只允许正向电流通过,而阻止反向电流流过。而齐纳管在一定的反向电压下可…...
Github出现复杂问题 无法合并 分支冲突太多 如何复原
目录 问题再现 解决思路 当然我所指的是在 main 分支开一个新的分支 删除本地文件夹 重新克隆 开一个新分支 切换分支 下载远程分支 文件覆盖 合并到主分支 问题再现 太复杂了 无法更改 编译器现状 全部崩溃了 无法更改 即使创建一个新的分支也无济于…...
《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》
桥梁作为交通基础设施的重要组成部分,其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长,桥梁结构的安全隐患日益凸显,传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…...
java_抽象类最佳实践-模板设计模式
基本介绍 模板设计模式可解决的问题 最佳实践 Template类 package com.hspedu.abstract_; abstract public class Template { //抽象类-模板设计模式public abstract void job();//抽象方法public void calculateTime() {//实现方法,调用 job 方法//得到开始的时间…...
linux网络 | http结尾、理解长连接短链接与cookie
前言:本节是http章节的最后一部分,主要解释一些小概念。讲解到了HTTP的方法,表单, 重定向等等。 现在废话不多说, 开始我们的学习吧。 ps:本节内容都是概念, 知道就行, 友友们放心观…...
dtdug汇编指令练习
r 通用寄存器 m 代表内存 imm 代表立即数 r8 代表8位通用寄存器 m8 代表8位内存 imm8 代表8位立即数 mov指令练习 MOV 的语法: mov 目标操作数,源操作数 作用:拷贝源操作数到目标操作数 1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元. 2、目标操作数…...
Windows自动化Python pyautogui RPA操作
依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠: pyautogui.sleep(1)鼠标事件: pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…...
Ollama私有化部署大语言模型LLM
目录 一、Ollama介绍 二、安装Ollama 1、标准安装 2、国内加速 三、升级Ollama版本 四、使用Ollama 1、启动ollama服务 systemctl start ollama.service ollama serve 2、使用ollama命令 ollama run 运行模型 ollama ps 查看正在运行的模型 ollama list 查看(本地)…...
ubuntu/kali安装c-jwt-cracker
1.下载安装包 可以去GitHub下载解压,我这直接在kali克隆下来了。(网络不好可能克隆不下来) git clone https://github.com/brendan-rius/c-jwt-cracker.git 2.如果下载的压缩包就需要进行解压,克隆的直接进入目录就好了。 unzi…...
MySql按年月日自动创建分区存储过程
-- 创建存储过程【通过数据库和表名】建立【partition_number】get分区,分区间隔为【gaps】 -- datasource 数据库名称 -- table_name 数据库表名 -- partition_number 新建分区的数量 -- partition_type 分区类型(0-按天分区,1-按月分区&…...
Spring配置文件中:密码明文改为密文处理方式(通用方法)
目录 一、背景 二、思路 A) 普通方式 B) 适合bootstrap.properties方式 三、示例 A) 普通方式(连接Redis集群) A) 普通方式(连接RocketMQ) B) 适合bootstrap.properties方式 四、总结 一、背景 SpringBoot和Sprin…...
树的模拟实现
一.链式前向星 所谓链式前向星,就是用链表的方式实现树。其中的链表是用数组模拟实现的链表。 首先我们需要创建一个足够大的数组h,作为所有结点的哨兵位。创建两个足够大的数组e和ne,一个作为数据域,一个作为指针域。创建一个变…...
计算机图形学【直线和圆的生成算法】
在计算机图形学中,光栅化是将几何图元转换成一个光栅图像(像素或点)在屏幕上输出的过程。光栅化可实现图形变为二维图像,其目的是将连续的几何图形转换为离散的像素点。光栅化算法的基本原理包括两个主要步骤:首先&…...
OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性
本文作者: 容器服务团队:刘佳旭、冯诗淳 可观测团队:竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准(CNCF Survey[1])。随着承接的业务规模越来越大,用户也在使…...
【深度学习】Pytorch:加载自定义数据集
本教程将使用 flower_photos 数据集演示如何在 PyTorch 中加载和导入自定义数据集。该数据集包含不同花种的图像,每种花的图像存储在以花名命名的子文件夹中。我们将深入讲解每个函数和对象的使用方法,使读者能够推广应用到其他数据集任务中。 flower_ph…...