Skip to content

Commit 668ff03

Browse files
更新并发
1 parent c3061cb commit 668ff03

File tree

8 files changed

+64
-7
lines changed

8 files changed

+64
-7
lines changed

src/DGenericContainer/List_ArrayList/RemoveItem.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ public static void main(String[] args) {
2727
* 错误
2828
*/
2929
public static void removeWithFor(List<String> list, String target){
30+
System.out.println(list.size());
3031
for(int i = 0; i < list.size(); i++){
3132
String item = list.get(i);
32-
if(target.equals(item)){
33+
if(item.equals(target)){
3334
list.remove(item);
35+
System.out.println(list.size());
3436
}
3537
}
3638
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package DGenericContainer.List_CopyOnWriteList;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.concurrent.CopyOnWriteArrayList;
6+
7+
/**
8+
* @ClassName CopyOnWriteListDemo
9+
* @Description
10+
* @Date 2022/5/12 22:07
11+
* @Version 1.0.0
12+
**/
13+
public class CopyOnWriteListDemo {
14+
15+
public static void main(String[] args) {
16+
ArrayList<String> arrayList = new ArrayList<String>();
17+
arrayList.add("target");
18+
arrayList.add("https://cs.supremepole.com/");
19+
arrayList.add("https://algorithm.supremepole.com/");
20+
arrayList.add("https://interview.supremepole.com/");
21+
removeWithFor(arrayList, "target");
22+
//removeWithCopyOnWrite(arrayList, "target");
23+
print(arrayList);
24+
}
25+
26+
/*
27+
* 错误
28+
*/
29+
public static void removeWithFor(List<String> list, String target){
30+
for(int i = 0; i < list.size(); i++){
31+
String item = list.get(i);
32+
if(target.equals(item)){
33+
list.remove(item);
34+
}
35+
}
36+
}
37+
38+
/*
39+
* 正确,拷贝一份只读副本,然后遍历的时候遍历副本,删除的时候删除原来的list。
40+
*/
41+
public static void removeWithCopyOnWrite(ArrayList<String> list, String target) {
42+
final CopyOnWriteArrayList<String> cowList = new CopyOnWriteArrayList<String>(list);
43+
for(String item : cowList) {
44+
if (item.equals(target)) {
45+
list.remove(item);
46+
}
47+
}
48+
}
49+
50+
public static void print(ArrayList<String> arrayList){
51+
for(String string:arrayList){
52+
System.out.println(string);
53+
}
54+
}
55+
}

src/EConcurrency/Secure/Synchronized/Counter.java renamed to src/EConcurrency/Synchronized/Counter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.Synchronized;
1+
package EConcurrency.Synchronized;
22

33
/**
44
* @author CodeCoderCoding

src/EConcurrency/Secure/Synchronized/UseCounter.java renamed to src/EConcurrency/Synchronized/UseCounter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.Synchronized;
1+
package EConcurrency.Synchronized;
22

33
/**
44
* @author CodeCoderCoding

src/EConcurrency/Secure/ThreadLocal/ThreadLocalBasic.java renamed to src/EConcurrency/ThreadLocal/ThreadLocalBasic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.ThreadLocal;
1+
package EConcurrency.ThreadLocal;
22

33
/**
44
* ThreadLocal基本使用

src/EConcurrency/Secure/ThreadLocal/ThreadLocalInit.java renamed to src/EConcurrency/ThreadLocal/ThreadLocalInit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.ThreadLocal;
1+
package EConcurrency.ThreadLocal;
22

33
public class ThreadLocalInit {
44
static ThreadLocal<Integer> local = new ThreadLocal<Integer>(){

src/EConcurrency/Secure/ThreadLocal/ThreadPoolProblem.java renamed to src/EConcurrency/ThreadLocal/ThreadPoolProblem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.ThreadLocal;
1+
package EConcurrency.ThreadLocal;
22

33
import java.util.concurrent.ExecutorService;
44
import java.util.concurrent.Executors;

src/EConcurrency/Secure/ThreadLocal/ThreadPoolProblemSolution.java renamed to src/EConcurrency/ThreadLocal/ThreadPoolProblemSolution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package EConcurrency.Secure.ThreadLocal;
1+
package EConcurrency.ThreadLocal;
22

33
import java.lang.reflect.Field;
44
import java.util.concurrent.*;

0 commit comments

Comments
 (0)