Skip to content

Commit 53d4181

Browse files
committed
modify catalog
1 parent 140bb35 commit 53d4181

37 files changed

+78
-49
lines changed

src/main/java/com/example/concurrency/atomic/AtomicCounter.java renamed to src/main/java/com/example/concurrency/features/atomic/AtomicCounter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.atomic;
1+
package com.example.concurrency.features.atomic;
22

33

44
import java.util.ArrayList;

src/main/java/com/example/concurrency/atomic/SimulatedCAS.java renamed to src/main/java/com/example/concurrency/features/atomic/SimulatedCAS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.atomic;
1+
package com.example.concurrency.features.atomic;
22

33
/**
44
* 描述:

src/main/java/com/example/concurrency/blockingQueue/BlockedQueue.java renamed to src/main/java/com/example/concurrency/features/blockingQueue/BlockedQueue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.blockingQueue;
1+
package com.example.concurrency.features.blockingQueue;
22

33
import java.util.concurrent.locks.Condition;
44
import java.util.concurrent.locks.Lock;

src/main/java/com/example/concurrency/concurrentHashMap/ConcurrentHashMapTest.java renamed to src/main/java/com/example/concurrency/features/concurrentHashMap/ConcurrentHashMapTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.concurrentHashMap;
1+
package com.example.concurrency.features.concurrentHashMap;
22

33
/**
44
* 描述:

src/main/java/com/example/concurrency/contentSwitch/ContentSwitchTest.java renamed to src/main/java/com/example/concurrency/features/contentSwitch/ContentSwitchTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.example.concurrency.contentSwitch;
1+
package com.example.concurrency.features.contentSwitch;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44

55
import java.util.concurrent.ThreadPoolExecutor;
66

src/main/java/com/example/concurrency/countDownLatchEx/CountDownLatchEx.java renamed to src/main/java/com/example/concurrency/features/countDownLatchEx/CountDownLatchEx.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.example.concurrency.countDownLatchEx;
1+
package com.example.concurrency.features.countDownLatchEx;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44

55
import java.util.concurrent.CountDownLatch;
66
import java.util.concurrent.Executor;

src/main/java/com/example/concurrency/cyclicBarrierEx/CyclicBarrierEx.java renamed to src/main/java/com/example/concurrency/features/cyclicBarrierEx/CyclicBarrierEx.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.cyclicBarrierEx;
1+
package com.example.concurrency.features.cyclicBarrierEx;
22

33

44
import java.util.concurrent.CyclicBarrier;

src/main/java/com/example/concurrency/deadLock/DeadLockTest.java renamed to src/main/java/com/example/concurrency/features/deadLock/DeadLockTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.example.concurrency.deadLock;
1+
package com.example.concurrency.features.deadLock;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44
import com.example.concurrency.util.ThreadDumpHelper;
55
import com.example.concurrency.util.ThreadUtil;
66

src/main/java/com/example/concurrency/finalEx/FinalExample.java renamed to src/main/java/com/example/concurrency/features/finalEx/FinalExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.finalEx;
1+
package com.example.concurrency.features.finalEx;
22

33
/**
44
* 描述: 构造函数的错误重排导致线程可能看到 final 变量的值会变

src/main/java/com/example/concurrency/futureTask/FutureTaskEx.java renamed to src/main/java/com/example/concurrency/features/futureTask/FutureTaskEx.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.example.concurrency.futureTask;
1+
package com.example.concurrency.features.futureTask;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
4-
import com.example.concurrency.threadPool.ThreadPoolUtil;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
4+
import com.example.concurrency.features.threadPool.ThreadPoolUtil;
55

66
import java.util.concurrent.Callable;
77
import java.util.concurrent.FutureTask;

src/main/java/com/example/concurrency/jsr166e/LongAdder.java renamed to src/main/java/com/example/concurrency/features/jsr166e/LongAdder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* http://creativecommons.org/publicdomain/zero/1.0/
55
*/
66

7-
package com.example.concurrency.jsr166e;
7+
package com.example.concurrency.features.jsr166e;
88

99
import java.io.IOException;
1010
import java.io.ObjectInputStream;

src/main/java/com/example/concurrency/jsr166e/Striped64.java renamed to src/main/java/com/example/concurrency/features/jsr166e/Striped64.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* http://creativecommons.org/publicdomain/zero/1.0/
55
*/
66

7-
package com.example.concurrency.jsr166e;
7+
package com.example.concurrency.features.jsr166e;
88

99
import java.util.Random;
1010

src/main/java/com/example/concurrency/limiter/RateLimiterUtil.java renamed to src/main/java/com/example/concurrency/features/limiter/RateLimiterUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.limiter;
1+
package com.example.concurrency.features.limiter;
22

33
import com.google.common.util.concurrent.RateLimiter;
44

src/main/java/com/example/concurrency/limiter/Sampler.java renamed to src/main/java/com/example/concurrency/features/limiter/Sampler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.limiter;
1+
package com.example.concurrency.features.limiter;
22

33
import org.apache.commons.lang3.Validate;
44

src/main/java/com/example/concurrency/limiter/TimeIntervalLimiter.java renamed to src/main/java/com/example/concurrency/features/limiter/TimeIntervalLimiter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.limiter;
1+
package com.example.concurrency.features.limiter;
22

33
import java.util.concurrent.TimeUnit;
44
import java.util.concurrent.atomic.AtomicLong;

src/main/java/com/example/concurrency/readWriteLock/CacheByReadWriteLock.java renamed to src/main/java/com/example/concurrency/features/readWriteLock/CacheByReadWriteLock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.readWriteLock;
1+
package com.example.concurrency.features.readWriteLock;
22

33
import java.util.HashMap;
44
import java.util.Map;

src/main/java/com/example/concurrency/readWriteLock/StampedLockEx.java renamed to src/main/java/com/example/concurrency/features/readWriteLock/StampedLockEx.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.readWriteLock;
1+
package com.example.concurrency.features.readWriteLock;
22

33
import java.util.concurrent.locks.StampedLock;
44

src/main/java/com/example/concurrency/semaphore/SemaphoreEx.java renamed to src/main/java/com/example/concurrency/features/semaphore/SemaphoreEx.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.semaphore;
1+
package com.example.concurrency.features.semaphore;
22

33
import java.util.List;
44
import java.util.Vector;

src/main/java/com/example/concurrency/singleton/Singleton.java renamed to src/main/java/com/example/concurrency/features/singleton/Singleton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.singleton;
1+
package com.example.concurrency.features.singleton;
22

33
/**
44
* 描述:

src/main/java/com/example/concurrency/singleton/StaticSingleton.java renamed to src/main/java/com/example/concurrency/features/singleton/StaticSingleton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.singleton;
1+
package com.example.concurrency.features.singleton;
22

33
/**
44
* @author zed

src/main/java/com/example/concurrency/synchronizedEx/SynchronizedConnection.java renamed to src/main/java/com/example/concurrency/features/synchronizedEx/SynchronizedConnection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.example.concurrency.synchronizedEx;
1+
package com.example.concurrency.features.synchronizedEx;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44
import com.example.concurrency.util.ThreadDumpHelper;
55
import com.example.concurrency.util.ThreadUtil;
66

src/main/java/com/example/concurrency/synchronizedEx/SynchronizedExample.java renamed to src/main/java/com/example/concurrency/features/synchronizedEx/SynchronizedExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.synchronizedEx;
1+
package com.example.concurrency.features.synchronizedEx;
22

33
import java.util.ArrayList;
44
import java.util.List;

src/main/java/com/example/concurrency/synchronizedEx/SynchronizedNoConnection.java renamed to src/main/java/com/example/concurrency/features/synchronizedEx/SynchronizedNoConnection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.synchronizedEx;
1+
package com.example.concurrency.features.synchronizedEx;
22

33
/**
44
* 描述:

src/main/java/com/example/concurrency/synchronizedEx/SynchronizedResolveDeadLock.java renamed to src/main/java/com/example/concurrency/features/synchronizedEx/SynchronizedResolveDeadLock.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
package com.example.concurrency.synchronizedEx;
1+
package com.example.concurrency.features.synchronizedEx;
22

33

4+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
5+
import com.example.concurrency.util.ThreadDumpHelper;
6+
import com.example.concurrency.util.ThreadUtil;
7+
48
import java.util.ArrayList;
59
import java.util.List;
10+
import java.util.concurrent.ThreadPoolExecutor;
611

712
/**
813
* 描述:
@@ -128,7 +133,15 @@ static class AllocatorSingle{
128133
* 根据账户id 排序保证获取锁顺序避免出现竞争 成本相对上面较低
129134
*
130135
*/
131-
class SortExeAccount {
136+
static class SortExeAccount {
137+
private static ThreadPoolExecutor threadPoolExecutor = ThreadPoolBuilder.fixedPool().setPoolSize(2).setThreadNamePrefix("SortExeAccount").build();
138+
private static ThreadDumpHelper dumpHelper = new ThreadDumpHelper();
139+
140+
private SortExeAccount(int id, int balance) {
141+
this.id = id;
142+
this.balance = balance;
143+
}
144+
132145
private int id;
133146
private int balance;
134147
void transfer(SortExeAccount target, int amt){
@@ -140,6 +153,8 @@ void transfer(SortExeAccount target, int amt){
140153
}
141154
// 锁定序号小的账户
142155
synchronized(left){
156+
ThreadUtil.sleep(2);
157+
143158
// 锁定序号大的账户
144159
synchronized(right){
145160
if (this.balance > amt){
@@ -149,6 +164,20 @@ void transfer(SortExeAccount target, int amt){
149164
}
150165
}
151166
}
167+
public static void main(String[] args) {
168+
SortExeAccount a = new SortExeAccount(1,200);
169+
SortExeAccount b = new SortExeAccount(2,200);
170+
threadPoolExecutor.execute(() -> {
171+
a.transfer(b,100);
172+
});
173+
threadPoolExecutor.execute(() -> {
174+
b.transfer(a,100);
175+
});
176+
threadPoolExecutor.shutdown();
177+
System.out.println(a.balance);
178+
System.out.println(b.balance);
179+
dumpHelper.tryThreadDump();
180+
}
152181
}
153182

154183

src/main/java/com/example/concurrency/threadPool/AbortPolicyWithReport.java renamed to src/main/java/com/example/concurrency/features/threadPool/AbortPolicyWithReport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import com.example.concurrency.util.ThreadDumpHelper;
44
import lombok.extern.slf4j.Slf4j;

src/main/java/com/example/concurrency/threadPool/MyThreadPool.java renamed to src/main/java/com/example/concurrency/features/threadPool/MyThreadPool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import java.util.ArrayList;
44
import java.util.List;

src/main/java/com/example/concurrency/threadPool/QueueAbleCachedThreadPool.java renamed to src/main/java/com/example/concurrency/features/threadPool/QueueAbleCachedThreadPool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import java.util.concurrent.*;
44
import java.util.concurrent.atomic.AtomicInteger;

src/main/java/com/example/concurrency/threadPool/ThreadPoolBuilder.java renamed to src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import org.apache.commons.lang3.Validate;
44

src/main/java/com/example/concurrency/threadPool/ThreadPoolUtil.java renamed to src/main/java/com/example/concurrency/features/threadPool/ThreadPoolUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import com.google.common.util.concurrent.MoreExecutors;
44
import com.google.common.util.concurrent.ThreadFactoryBuilder;

src/main/java/com/example/concurrency/threadPool/package-info.java renamed to src/main/java/com/example/concurrency/features/threadPool/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
* 3.ThreadPoolBuilder 线程池创建工具类
55
* 4.ThreadPoolUtil 线程池操作相关工具类 @author calvin 摘自vjtools
66
*/
7-
package com.example.concurrency.threadPool;
7+
package com.example.concurrency.features.threadPool;

src/main/java/com/example/concurrency/threadState/ThreadState.java renamed to src/main/java/com/example/concurrency/features/threadState/ThreadState.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadState;
1+
package com.example.concurrency.features.threadState;
22

33
import com.example.concurrency.util.ThreadDumpHelper;
44
import com.example.concurrency.util.ThreadUtil;

src/main/java/com/example/concurrency/visibility/Visibility.java renamed to src/main/java/com/example/concurrency/features/visibility/Visibility.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.example.concurrency.visibility;
1+
package com.example.concurrency.features.visibility;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44
import com.example.concurrency.util.ThreadUtil;
55

66
import java.util.concurrent.ThreadPoolExecutor;

src/main/java/com/example/concurrency/volatileExample/VolatileExample.java renamed to src/main/java/com/example/concurrency/features/volatileExample/VolatileExample.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.volatileExample;
1+
package com.example.concurrency.features.volatileExample;
22

33
import java.util.Scanner;
44

@@ -64,7 +64,7 @@ private void stopThread(){
6464

6565
/**
6666
* 使用 volatile 修饰基本数据内存不能保证原子性
67-
* @link com.example.concurrency.atomic.AtomicCounter
67+
* @link com.example.concurrency.features.atomic.AtomicCounter
6868
*/
6969
static class VolatileInc implements Runnable{
7070

src/main/java/com/example/concurrency/util/ConcurrentUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.example.concurrency.util;
22

3-
import com.example.concurrency.jsr166e.LongAdder;
4-
import com.example.concurrency.limiter.RateLimiterUtil;
5-
import com.example.concurrency.limiter.Sampler;
6-
import com.example.concurrency.limiter.TimeIntervalLimiter;
3+
import com.example.concurrency.features.jsr166e.LongAdder;
4+
import com.example.concurrency.features.limiter.RateLimiterUtil;
5+
import com.example.concurrency.features.limiter.Sampler;
6+
import com.example.concurrency.features.limiter.TimeIntervalLimiter;
77
import com.google.common.util.concurrent.RateLimiter;
88

99
import java.util.concurrent.CountDownLatch;

src/main/java/com/example/concurrency/util/ThreadDumpHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.concurrency.util;
22

3-
import com.example.concurrency.limiter.TimeIntervalLimiter;
3+
import com.example.concurrency.features.limiter.TimeIntervalLimiter;
44
import lombok.extern.slf4j.Slf4j;
55

66
import java.util.Map;

src/test/java/com/example/concurrency/ThreadDumpHelperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.concurrency;
22

3-
import com.example.concurrency.threadPool.ThreadPoolBuilder;
3+
import com.example.concurrency.features.threadPool.ThreadPoolBuilder;
44
import com.example.concurrency.util.ConcurrentUtil;
55
import com.example.concurrency.util.ThreadDumpHelper;
66
import com.example.concurrency.util.ThreadUtil;

src/test/java/com/example/concurrency/threadPool/AbortPolicyWithReportTest.java renamed to src/test/java/com/example/concurrency/features/threadPool/AbortPolicyWithReportTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.concurrency.threadPool;
1+
package com.example.concurrency.features.threadPool;
22

33
import org.junit.Test;
44

0 commit comments

Comments
 (0)