MCPcopy Create free account

hub / github.com/Fadezed/concurrency / types & classes

Types & classes110 in github.com/Fadezed/concurrency

ClassAbortPolicyWithReport
描述: AbortPolicy线程拒绝策略 如果线程池已满,退出申请并打印Thread Dump(会有一定的最少间隔,默认为10分钟) @author zed
src/main/java/com/example/concurrency/features/threadPool/AbortPolicyWithReport.java:15
ClassAbortPolicyWithReportTest
@author zed AbortPolicyWithReportTest
src/test/java/com/example/concurrency/features/threadPool/AbortPolicyWithReportTest.java:13
ClassAccount
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedResolveDeadLock.java:21
ClassAccount
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedNoConnection.java:12
ClassAccount
通过锁类对象方式 同样能解决并发问题 但是会导致操作串行 性能极差故不推荐
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:138
ClassAllocator
破坏占用且等待条件 加入分配类,只有在同时拿到两个锁的时候才可以执行后续操作
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedResolveDeadLock.java:54
ClassAllocatorSingle
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedResolveDeadLock.java:126
ClassAlwaysSampler
采样率为100时,总是返回true
src/main/java/com/example/concurrency/features/limiter/Sampler.java:59
ClassAtomicCounter
java实现原子操作 补充CAS 实现原子操作的三大问题 1、ABA问题 解决方式 加上版本号1A、2B、3A java 1.5 后提供AtomicStampedReference 检查当前引用是否符合预期引用,并检查当前标志是否等于预期标志 2、循环时间长开销大 3、只能保证一个共享变量的原子操作
src/main/java/com/example/concurrency/features/atomic/AtomicCounter.java:16
ClassBlocked
src/main/java/com/example/concurrency/features/threadstate/ThreadState.java:52
ClassBlockedQueue
描述: 阻塞队列 @author zed @since 2019-06-13 5:15 PM
src/main/java/com/example/concurrency/patterns/blockingQueue/BlockedQueue.java:14
ClassCacheByReadWriteLock
描述: 读写锁实现缓存 ReentrantReadWriteLock 只支持锁的降级 不支持锁升级 并且只有写锁可以创建条件变量 读写锁允许多个线程同时读共享变量,当一个线程在写共享变量的时候,是不允许其他线程执行写操作和读操作。 @author zed @since 2019-06-17 5
src/main/java/com/example/concurrency/features/readwritelock/CacheByReadWriteLock.java:20
ClassCachedThreadPoolBuilder
创建CachedThreadPool, maxSize建议设置 1. 任务提交时, 如果线程数还没达到minSize即创建新线程并绑定任务(即minSize次提交后线程总数必达到minSize, 不会重用之前的线程) minSize默认为0, 可设置保证有基本的线程处理请求不被回收. 2. 第
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java:165
ClassCell
Padded variant of AtomicLong supporting only raw accesses plus CAS. The value field is placed between pads, hoping that the JVM doesn't reorder them.
src/main/java/com/example/concurrency/features/jsr166e/Striped64.java:68
ClassCompletableFutureExample
描述: CompletableFutureExample Java 8 异步编程可描述串行关系、AND汇聚关系和OR汇聚关系以及异常处理 @author zed @since 2019-07-03 1:57 PM
src/main/java/com/example/concurrency/features/completablefuture/CompletableFutureExample.java:15
ClassConcurrencyApplication
@author zed
src/main/java/com/example/concurrency/ConcurrencyApplication.java:9
ClassConcurrencyApplicationTests
src/test/java/com/example/concurrency/ConcurrencyApplicationTests.java:8
ClassConcurrentHashMapTest
描述: C map Test @author zed @since 2019-06-04 2:30 PM
src/main/java/com/example/concurrency/features/concurrenthashmap/ConcurrentHashMapTest.java:10
ClassConcurrentUtil
@author zed 并发常用工具类
src/main/java/com/example/concurrency/util/ConcurrentUtil.java:18
ClassConditionQueue
描述: 条件队列 通过ReentrantLock 实现打印和停止打印的条件队列,每次容量为5 @author zed @since 2019-07-01 10:59 AM
src/main/java/com/example/concurrency/patterns/conditionqueues/ConditionQueue.java:19
ClassConsoleTimePrintTask
描述: 控制台输出时间任务取消 通过interrupt() 注意抛出InterruptedException异常的地方需要重置下打断标识 适用场景:当后台任务需要取消时 @author zed @since 2019-06-30 3:18 PM
src/main/java/com/example/concurrency/patterns/taskcancel/ConsoleTimePrintTask.java:13
ClassContentSwitchTest
@author zed 上下文切换测试类 1、结论 循环数量在百万级别时 并发处理速度才会领先,说明上下文切换的存在以及线程创建的成本 2、使用Lmbench3 测量上下文切换时长,使用vmstat 查看测量上下文切换次数上下文速度 1000次/s 3、减少上下文切换 1)无锁并发编程-》多线程锁
src/main/java/com/example/concurrency/features/contentswitch/ContentSwitchTest.java:19
ClassControllableQueue
https://github.com/apache/tomcat/blob/trunk/java/org/apache/tomcat/util/threads/TaskQueue.java
src/main/java/com/example/concurrency/features/threadPool/QueueAbleCachedThreadPool.java:88
ClassControlledInitialization
描述: 基于CountDownLatch实现应用初始化 适用场景:多个重要资源的初始化 @author zed @since 2019-07-01 11:17 AM
src/main/java/com/example/concurrency/patterns/resourcesinitialization/ControlledInitialization.java:16
ClassConvergeRelation
描述汇聚Or关系 thenApply
src/main/java/com/example/concurrency/features/completablefuture/CompletableFutureExample.java:71
ClassCountDownLatchEx
描述: CountDownLatchEx 中文意思 倒计时 主要用来解决一个线程等待多个线程的场景 @author zed @since 2019-06-18 10:20 AM
src/main/java/com/example/concurrency/features/countdownlatch/CountDownLatchEx.java:17
ClassCounter
src/test/java/com/example/concurrency/dflockTest/SyncTest.java:48
ClassCounter
src/test/java/com/example/concurrency/dflockTest/RTTTest.java:52
ClassCounter
src/test/java/com/example/concurrency/dflockTest/StampedLockTest.java:48
ClassCounter
src/test/java/com/example/concurrency/dflockTest/LockTest.java:49
ClassCounter
src/test/java/com/example/concurrency/dflockTest/LongAdderTest.java:48
ClassCyclicBarrierEx
描述: CyclicBarrierEx 中文意思 篱栅 是一组线程之间互相等待 @author zed @since 2019-06-18 10:27 AM
src/main/java/com/example/concurrency/features/cyclicbarrier/CyclicBarrierEx.java:13
ClassCyclicBarrierGeekTime
src/main/java/com/example/concurrency/features/cyclicbarrier/CyclicBarrierGeekTime.java:6
ClassDeadLockAccount
分别加锁方式 支持并行 锁粒度变细性能提升 但是 会导致严重问题: 死锁!!
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:155
ClassDeadLockTest
@author zed 死锁测试 避免死锁常用方法 1、避免一个线程同时获取多个锁 2、避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源 3、尝试使用定时锁,使用lock.tryLock(timeOut) 来替代使用内部锁机制 4、对于数据库锁,加锁和解锁必须在一个数据库连接里,否则
src/main/java/com/example/concurrency/features/deadlock/DeadLockTest.java:20
ClassExceptionHandler
处理异常 此例为发生异常默认为0
src/main/java/com/example/concurrency/features/completablefuture/CompletableFutureExample.java:102
ClassExchangerExample
描述: 交换者 用于两个线程间的数据交换 @author zed @since 2019-07-03 5:39 PM
src/main/java/com/example/concurrency/features/exchanger/ExchangerExample.java:15
ClassExecutorCompletionServiceExample
描述: CompletionService BlockingQueue+Executor 批量执行异步任务 并且可以支持Forking Cluster模式即并行查询多个服务其中一个返回则结束 @author zed @since 2019-07-03 10:07 AM
src/main/java/com/example/concurrency/features/completionservice/ExecutorCompletionServiceExample.java:17
ClassFinalExample
描述: 构造函数的错误重排导致线程可能看到 final 变量的值会变 FinalExample @link http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html @author zed @since 2019-06-13 1:3
src/main/java/com/example/concurrency/features/finalcase/FinalExample.java:11
ClassFixedLockOrdering
描述: 处理锁顺序问题 (防止死锁)@link com.example.concurrency.features.synchronizedcase.SynchronizedResolveDeadLock.SortExeAccount 适用场景:处理多个锁时 @author zed @since 20
src/main/java/com/example/concurrency/patterns/lockordering/FixedLockOrdering.java:11
ClassFixedThreadPoolBuilder
创建FixedThreadPool.建议必须设置queueSize保证有界。 1. 任务提交时, 如果线程数还没达到poolSize即创建新线程并绑定任务(即poolSize次提交后线程总数必达到poolSize,不会重用之前的线程) poolSize默认为1,即singleThreadPool
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java:68
ClassFutureTaskEx
描述: FutureTaskEx @author zed @since 2019-06-18 4:52 PM
src/main/java/com/example/concurrency/features/futuretask/FutureTaskEx.java:18
ClassGlobal
src/main/java/com/example/concurrency/features/finalcase/FinalExample.java:12
ClassLockTest
src/test/java/com/example/concurrency/dflockTest/LockTest.java:7
ClassLockableObject
src/main/java/com/example/concurrency/patterns/lockordering/FixedLockOrdering.java:13
ClassLogbackListAppender
在List中保存日志的Appender, 用于测试Logback的日志输出. 在测试开始前, 使用任意一种addToLogger()方法将此appender添加到需要侦听的logger中.
src/test/java/com/example/concurrency/LogbackListAppender.java:17
ClassLongAdder
移植 http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166e/LongAdder.java Revision.1.17 One or more variables that together maintain an initi
src/main/java/com/example/concurrency/features/jsr166e/LongAdder.java:45
ClassLongAdderTest
src/test/java/com/example/concurrency/dflockTest/LongAdderTest.java:6
ClassLongRunTask
src/test/java/com/example/concurrency/ThreadDumpHelperTest.java:23
ClassMutexSemaphore
Semaphore 实现互斥
src/main/java/com/example/concurrency/features/semaphore/SemaphoreEx.java:19
ClassMyThreadPool
描述: 简化的线程池,仅用来说明工作原理 @author zed @since 2019-06-18 3:10 PM
src/main/java/com/example/concurrency/features/threadPool/MyThreadPool.java:16
ClassNeverSampler
采样率为0时,总是返回false
src/main/java/com/example/concurrency/features/limiter/Sampler.java:69
ClassObjPool
实现限流器 @param <T> @param <R>
src/main/java/com/example/concurrency/features/semaphore/SemaphoreEx.java:45
ClassParallelDivideAndConquer
描述: 平行分治 fork/join @author zed @since 2019-07-01 11:59 AM
src/main/java/com/example/concurrency/patterns/divideconquer/ParallelDivideAndConquer.java:19
ClassParallelSum
分治执行
src/main/java/com/example/concurrency/patterns/divideconquer/ParallelDivideAndConquer.java:23
ClassPoint
乐观读升级官方示例
src/main/java/com/example/concurrency/features/readwritelock/StampedLockEx.java:52
ClassProducerConsumer
描述: 生产消费 @author zed @since 2019-07-01 2:12 PM
src/main/java/com/example/concurrency/patterns/producerconsumer/ProducerConsumer.java:14
ClassQueueAbleCachedThreadPool
@author zed From Tomcat 8.5.6, 传统的FixedThreadPool有Queue但线程数量不变,而CachedThreadPool线程数可变但没有Queue Tomcat的线程池,通过控制TaskQueue,线程数,但线程数到达最大时会进入Queue中. 代码从To
src/main/java/com/example/concurrency/features/threadPool/QueueAbleCachedThreadPool.java:20
ClassQueueAbleCachedThreadPoolBuilder
从Tomcat移植过来的可扩展可用Queue缓存任务的ThreadPool @see 20.0
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java:283
ClassRTTTest
src/test/java/com/example/concurrency/dflockTest/RTTTest.java:9
ClassRateLimiterUtil
@author zed RateLimiterUtil
src/main/java/com/example/concurrency/features/limiter/RateLimiterUtil.java:14
ClassResource1
资源1
src/main/java/com/example/concurrency/patterns/resourcesinitialization/ControlledInitialization.java:23
ClassResource2
资源2
src/main/java/com/example/concurrency/patterns/resourcesinitialization/ControlledInitialization.java:28
ClassResource3
资源3
src/main/java/com/example/concurrency/patterns/resourcesinitialization/ControlledInitialization.java:33
ClassResourcePool
描述: 对象资源池 适用场景:当要创建某些有限资源的池时使用 @author zed @since 2019-07-01 3:01 PM
src/main/java/com/example/concurrency/patterns/resourcepool/ResourcePool.java:17
ClassSafeAccount
通过传入锁的方式 但是必须保持lock对象跟SafeAccount 一对一绑定 并且真实场景中创建账户对象的地方可能是分布式,所以会很复杂极不推荐!
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:112
ClassSafeCalc
利用Synchronized 实现原子操作
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedExample.java:44
ClassSafeRunnable
保证不会有Exception抛出到线程池的Runnable包裹类,防止用户没有捕捉异常导致中断了线程池中的线程, 使得SchedulerService无法执行. 在无法控制第三方包的Runnalbe实现时,使用本类进行包裹.
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolUtil.java:87
ClassSampler
@author zed 采样器 移植 Twitter Common, 优化使用ThreadLocalRandom https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/util/Sampler.jav
src/main/java/com/example/concurrency/features/limiter/Sampler.java:16
ClassScheduledThreadPoolBuilder
创建ScheduledPool
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java:245
ClassSemaphoreEx
描述: Semaphore example acquire() 为原子操作 保证只有一个线程能将count减为0 则其他线程阻塞等待,release()+1后得以执行 @author zed @since 2019-06-17 3:50 PM
src/main/java/com/example/concurrency/features/semaphore/SemaphoreEx.java:15
ClassSerialRelation
描述串行关系 thenApply
src/main/java/com/example/concurrency/features/completablefuture/CompletableFutureExample.java:57
ClassSerialTask
描述: 通过锁和volatile 实现的线程共享方案 适用场景:特定条件下有效阻止并行执行 @author zed @since 2019-07-02 3:33 PM
src/main/java/com/example/concurrency/patterns/serialtask/SerialTask.java:17
ClassSimulatedCompareAndSwap
描述: SimulatedCompareAndSwap 模拟cas操作 @author zed @since 2019-06-18 2:09 PM
src/main/java/com/example/concurrency/features/atomic/SimulatedCompareAndSwap.java:10
ClassSingleton
描述: 双重检查锁实现单例 @author zed
src/main/java/com/example/concurrency/features/singleton/Singleton.java:9
ClassSortExeAccount
根据账户id 排序保证获取锁顺序避免出现竞争 成本相对上面较低
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedResolveDeadLock.java:136
ClassStampedLockEx
描述: StampedLockEx 写锁和悲观锁 跟ReentrantReadWriteLock 类似,非可重入锁,并且不支持条件变量 ReadWriteLock 支持多个线程同时读,但是当多个线个线程同时读的时候, 所有的写操作会被阻塞;而 StampedLock 提供的乐观读(无锁),是允许一个
src/main/java/com/example/concurrency/features/readwritelock/StampedLockEx.java:19
ClassStampedLockTest
src/test/java/com/example/concurrency/dflockTest/StampedLockTest.java:6
ClassStaticSingleton
@author zed
src/main/java/com/example/concurrency/features/singleton/StaticSingleton.java:6
ClassStaticSingletonHolder
src/main/java/com/example/concurrency/features/singleton/StaticSingleton.java:10
ClassStriped64
移植 http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166e/Striped64.java Revision 1.10 A package-local class holding common representation a
src/main/java/com/example/concurrency/features/jsr166e/Striped64.java:19
ClassSyncTest
src/test/java/com/example/concurrency/dflockTest/SyncTest.java:6
ClassSynchronizedConnection
描述: 保护有关联关系的多个资源 银行转帐问题 @author zed @since 2019-06-13 1:13 PM
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:17
ClassSynchronizedExample
描述: Synchronized 实现原理 基于操作系统Mutex Lock (互斥锁)实现,所以每次获取和释放都会由用户态和内核态的切换成本高,jdk1.5之前性能差 JVM通过ACC_SYNCHRONIZED 标识一个方法是否为同步方法,而代码块则通过monitorenter和monitorex
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedExample.java:16
ClassSynchronizedNoConnection
描述: 保护没有关联关系的多个资源 银行账户密码和余额没有关联关系 @author zed @since 2019-06-13 2:12 PM
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedNoConnection.java:10
ClassSynchronizedResolveDeadLock
描述: 解决死锁问题 @author zed @since 2019-06-13 3:35 PM
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedResolveDeadLock.java:19
ClassSynchronizedTransferAccount
直接对转账方法做同步方式 锁对象为this 而target对象资源不受保护
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:46
ClassT1Task
洗水壶、烧开水、泡茶
src/main/java/com/example/concurrency/features/futuretask/FutureTaskEx.java:90
ClassT2Task
洗茶壶、洗茶杯、拿茶叶
src/main/java/com/example/concurrency/features/futuretask/FutureTaskEx.java:113
ClassTaskConvergence
描述: 聚合任务 CyclicBarrier(int parties, Runnable barrierAction) barrierAction为到达屏障后优先执行的任务 适用场景:当需要确定一组正在运行的任务是否已完成时 @author zed @since 2019-06-30 3:3
src/main/java/com/example/concurrency/patterns/taskconvergence/TaskConvergence.java:18
ClassThreadDumpHelper
描述: 由程序触发的ThreadDump,打印到日志中 因为ThreadDump本身会造成JVM停顿,所以加上了开关和最少间隔时间的选项(默认不限制) 因为ThreadInfo的toString()最多只会打印8层的StackTrace,所以加上了最大打印层数的选项(默认为8) @author z
src/main/java/com/example/concurrency/util/ThreadDumpHelper.java:17
ClassThreadDumpHelperTest
描述: ThreadDumpHelper Test @author zed @since 2019-06-03 11:26 AM
src/test/java/com/example/concurrency/ThreadDumpHelperTest.java:22
ClassThreadPoolBuilder
@author zed ThreadPool创建的工具类. 对比JDK Executors中的newFixedThreadPool(), newCachedThreadPool(),newScheduledThreadPool, 提供更多有用的配置项. 另包含了移植自Tomcat的Queuabl
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolBuilder.java:20
ClassThreadPoolUtil
线程池工具集 1. 优雅关闭线程池的(via guava) 2. 创建可自定义线程名的ThreadFactory(via guava) 3. 防止第三方Runnable未捕捉异常导致线程跑飞 @author calvin
src/main/java/com/example/concurrency/features/threadPool/ThreadPoolUtil.java:26
ClassThreadState
描述: 线程状态一览 @author zed
src/main/java/com/example/concurrency/features/threadstate/ThreadState.java:12
ClassThreadUtil
描述: ThreadUtil 1. 处理了InterruptedException的sleep 2. 正确的InterruptedException处理方法 @author zed
src/main/java/com/example/concurrency/util/ThreadUtil.java:14
ClassTimeIntervalLimiter
描述: TimeIntervalLimiter @author zed
src/main/java/com/example/concurrency/features/limiter/TimeIntervalLimiter.java:12
ClassTimeWaiting
src/main/java/com/example/concurrency/features/threadstate/ThreadState.java:26
ClassUnsafeAccount
线程不安全
src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedConnection.java:23
ClassVisibility
描述: visibility 可见性问题 @author zed @since 2019-06-13 9:05 AM
src/main/java/com/example/concurrency/features/visibility/Visibility.java:15
next →1–100 of 110, ranked by callers