当前位置:主页 > 技术文档 > Java 下载
《Java并发编程:核心方法与框架》源代码

《Java并发编程:核心方法与框架》源代码

  • 更新:2022-03-22 09:05:47
  • 大小:4.8 MB
  • 热度:644
  • 审核:濮理群
  • 类别:技术文章
  • 格式:PDF

  • 资源介绍
  • 相关推荐

封面图

目录

  • 前言
  • 第1章Semaphore和Exchanger的使用1
  • 1.1Semaphore的使用2
  • 1.1.1类Semaphore的同步性2
  • 1.1.2类Semaphore构造方法permits参数作用4
  • 1.1.3方法acquire(int permits)参数作用及动态添加permits许可数量5
  • 1.1.4方法acquireUninterruptibly()的使用8
  • 1.1.5方法availablePermits()和drainPermits()10
  • 1.1.6方法getQueueLength()和hasQueuedThreads()12
  • 1.1.7公平与非公平信号量的测试13
  • 1.1.8方法tryAcquire()的使用15
  • 1.1.9方法tryAcquire(int permits)的使用17
  • 1.1.10方法tryAcquire(long timeout, TimeUnit unit)的使用17
  • 1.1.11方法tryAcquire(int permits, long timeout, TimeUnit unit)的使用19
  • 1.1.12多进路-多处理-多出路实验20
  • 1.1.13多进路-单处理-多出路实验21
  • 1.1.14使用Semaphore创建字符串池23
  • 1.1.15使用Semaphore实现多生产者/多消费者模式25
  • 1.2Exchanger的使用31
  • 1.2.1方法exchange()阻塞的特性31
  • 1.2.2方法exchange()传递数据32
  • 1.2.3方法exchange(V x, long timeout, TimeUnit unit)与超时34
  • 1.3本章总结35
  • 第2章CountDownLatch和CyclicBarrier的使用36
  • 2.1CountDownLatch的使用36
  • 2.1.1初步使用37
  • 2.1.2裁判在等全部的运动员到来38
  • 2.1.3各就各位准备比赛39
  • 2.1.4完整的比赛流程41
  • 2.1.5方法await(long timeout, TimeUnit unit)44
  • 2.1.6方法getCount()的使用46
  • 2.2CyclicBarrier的使用46
  • 2.2.1初步使用48
  • 2.2.2验证屏障重置性及getNumberWaiting()方法的使用51
  • 2.2.3用CyclicBarrier类实现阶段跑步比赛52
  • 2.2.4方法isBroken()的使用55
  • 2.2.5方法await(long timeout, TimeUnit unit)超时出现异常的测试57
  • 2.2.6方法getNumberWaiting()和getParties()60
  • 2.2.7方法reset()62
  • 2.3本章总结64
  • 第3章Phaser的使用65
  • 3.1Phaser的使用66
  • 3.2类Phaser的arriveAndAwaitAdvance()方法测试166
  • 3.3类Phaser的arriveAndAwaitAdvance()方法测试268
  • 3.4类Phaser的arriveAndDeregister()方法测试69
  • 3.5类Phaser的getPhase()和onAdvance()方法测试70
  • 3.6类Phaser的getRegisteredParties()方法和register()测试74
  • 3.7类Phaser的bulkRegister()方法测试75
  • 3.8类Phaser的getArrivedParties()和getUnarrivedParties()方法测试75
  • 3.9类Phaser的arrive()方法测试177
  • 3.10类Phaser的arrive ()方法测试278
  • 3.11类Phaser的awaitAdvance(int phase)方法测试81
  • 3.12类Phaser的awaitAdvanceInterruptibly(int)方法测试183
  • 3.13类Phaser的awaitAdvanceInterruptibly(int)方法测试284
  • 3.14类Phaser的awaitAdvanceInterruptibly(int)方法测试386
  • 3.15类Phaser的awaitAdvanceInterruptibly(int,long,TimeUnit)方法测试487
  • 3.16类Phaser的forceTermination()和isTerminated()方法测试89
  • 3.17控制Phaser类的运行时机92
  • 3.18本章总结93
  • 第4章Executor与ThreadPoolExecutor的使用94
  • 4.1Executor接口介绍94
  • 4.2使用Executors工厂类创建线程池97
  • 4.2.1使用newCachedThreadPool()方法创建无界线程池98
  • 4.2.2验证newCachedThreadPool()创建为Thread池100
  • 4.2.3使用newCachedThreadPool (ThreadFactory)定制线程工厂102
  • 4.2.4使用newFixedThreadPool(int)方法创建有界线程池103
  • 4.2.5使用newFixedThreadPool(int, ThreadFactory)定制线程工厂105
  • 4.2.6使用newSingleThreadExecutor()方法创建单一线程池106
  • 4.2.7使用newSingleThreadExecutor(ThreadFactory)定制线程工厂107
  • 4.3ThreadPoolExecutor的使用107
  • 4.3.1构造方法的测试107
  • 4.3.2方法shutdown()和shutdownNow()与返回值119
  • 4.3.3方法isShutdown()129
  • 4.3.4方法isTerminating ()和isTerminated ()129
  • 4.3.5方法awaitTermination(long timeout,TimeUnit unit)131
  • 4.3.6工厂ThreadFactory+execute()+UncaughtExceptionHandler处理异常134
  • 4.3.7方法set/getRejectedExecutionHandler()138
  • 4.3.8方法allowsCoreThreadTimeOut()/(boolean)140
  • 4.3.9方法prestartCoreThread()和prestartAllCoreThreads()142
  • 4.3.10方法getCompletedTaskCount()144
  • 4.3.11常见3种队列结合max值的因果效果145
  • 4.3.12线程池ThreadPoolExecutor的拒绝策略151
  • 4.3.13方法afterExecute()和beforeExecute()157
  • 4.3.14方法remove(Runnable)的使用159
  • 4.3.15多个get方法的测试162
  • 4.3.16线程池ThreadPoolExecutor与Runnable执行为乱序特性166
  • 4.4本章总结167
  • 第5章Future和Callable的使用168
  • 5.1Future和Callable的介绍168
  • 5.2方法get()结合ExecutorService中的submit(Callable)的使用168
  • 5.3方法get()结合ExecutorService中的submit(Runnable)和isDone()的使用170
  • 5.4使用ExecutorService接口中的方法submit(Runnable, T result)170
  • 5.5方法cancel(boolean mayInterruptIfRunning)和isCancelled()的使用173
  • 5.6方法get(long timeout, TimeUnit unit)的使用178
  • 5.7异常的处理179
  • 5.8自定义拒绝策略RejectedExecutionHandler接口的使用181
  • 5.9方法execute()与submit()的区别182
  • 5.10验证Future的缺点186
  • 5.11本章总结188
  • 第6章CompletionService的使用189
  • 6.1CompletionService介绍189
  • 6.2使用CompletionService解决Future的缺点190
  • 6.3使用take()方法193
  • 6.4使用poll()方法194
  • 6.5使用poll(long timeout, TimeUnit unit)方法195
  • 6.6类CompletionService与异常199
  • 6.7方法Future submit(Runnable task, V result)的测试205
  • 6.8本章总结207
  • 第7章接口ExecutorService的方法使用208
  • 7.1在ThreadPoolExecutor中使用ExecutorService中的方法208
  • 7.2方法invokeAny(Collection tasks)的使用与interrupt209
  • 7.3方法invokeAny()与执行慢的任务异常212
  • 7.4方法invokeAny()与执行快的任务异常216
  • 7.5方法invokeAny()与全部异常220
  • 7.6方法invokeAny(CollectionTasks, timeout, timeUnit)超时的测试222
  • 7.7方法invokeAll(Collection tasks)全正确226
  • 7.8方法invokeAll(Collection tasks)快的正确慢的异常227
  • 7.9方法invokeAll(Collection tasks)快的异常慢的正确230
  • 7.10方法invokeAll(Collection tasks,long timeout,TimeUnit unit)先慢后快232
  • 7.11方法invokeAll(Collection tasks,long timeout,TimeUnit unit)先快后慢234
  • 7.12方法invokeAll(Collection tasks,long timeout,TimeUnit unit)全慢236
  • 7.13本章总结238
  • 第8章计划任务ScheduledExecutorService的使用239
  • 8.1ScheduledExecutorService的使用240
  • 8.2ScheduledThreadPoolExecutor使用Callable延迟运行241
  • 8.3ScheduledThreadPoolExecutor使用Runnable延迟运行244
  • 8.4延迟运行并取得返回值245
  • 8.5使用scheduleAtFixedRate()方法实现周期性执行246
  • 8.6使用scheduleWithFixedDelay()方法实现周期性执行248
  • 8.7使用getQueue()与remove()方法250
  • 8.8方法setExecuteExistingDelayedTasksAfterShutdownPolicy()的使用253
  • 8.9方法setContinueExistingPeriodicTasksAfterShutdownPolicy()255
  • 8.10使用cancel(boolean)与setRemoveOnCancelPolicy()方法257
  • 8.11本章总结261
  • 第9章Fork-Join分治编程262
  • 9.1Fork-Join分治编程与类结构262
  • 9.2使用RecursiveAction让任务跑起来264
  • 9.3使用RecursiveAction分解任务265
  • 9.4使用RecursiveTask取得返回值与join()和get()方法的区别266
  • 9.5使用RecursiveTask执行多个任务并打印返回值270
  • 9.6使用RecursiveTask实现字符串累加272
  • 9.7使用Fork-Join实现求和:实验1273
  • 9.8使用Fork-Join实现求和:实验2275
  • 9.9类ForkJoinPool核心方法的实验276
  • 9.9.1方法public void execute(ForkJoinTask< > task)的使用276
  • 9.9.2方法public void execute(Runnable task)的使用278
  • 9.9.3方法public void execute(ForkJoinTask< > task)如何处理返回值278
  • 9.9.4方法public ForkJoinTask submit(ForkJoinTask task)的使用279
  • 9.9.5方法public ForkJoinTask< > submit(Runnable task)的使用280
  • 9.9.6方法public ForkJoinTask submit(Callable task)的使用281
  • 9.9.7方法public ForkJoinTask submit(Runnable task, T result)的使用282
  • 9.9.8方法public List> invokeAll(Collection< extends Callable> tasks)的使用285
  • 9.9.9方法public void shutdown()的使用286
  • 9.9.10方法public List shutdownNow()的使用289
  • 9.9.11方法isTerminating()和isTerminated()的使用292
  • 9.9.12方法public boolean isShutdown()的使用295
  • 9.9.13方法public boolean awaitTermination(long timeout, TimeUnit unit)的使用297
  • 9.9.14方法public T invoke(ForkJoinTask task)的使用299
  • 9.9.15监视pool池的状态301
  • 9.10类ForkJoinTask对异常的处理308
  • 9.11本章总结309
  • 第10章并发集合框架310
  • 10.1集合框架结构简要310
  • 10.1.1接口Iterable310
  • 10.1.2接口Collection311
  • 10.1.3接口List311
  • 10.1.4接口Set312
  • 10.1.5接口Queue312
  • 10.1.6接口Deque312
  • 10.2非阻塞队列313
  • 10.2.1类ConcurrentHashMap的使用313
  • 10.2.2类ConcurrentSkipListMap的使用322
  • 10.2.3类ConcurrentSkipListSet的使用325
  • 10.2.4类ConcurrentLinkedQueue的使用328
  • 10.2.5类ConcurrentLinkedDeque的使用330
  • 10.2.6类CopyOnWriteArrayList的使用332
  • 10.2.7类CopyOnWriteArraySet的使用335
  • 10.3阻塞队列337
  • 10.3.1类ArrayBlockingQueue的使用337
  • 10.3.2类PriorityBlockingQueue的使用338
  • 10.3.3类LinkedBlockingQueue的使用340
  • 10.3.4类LinkedBlockingDeque的使用341
  • 10.3.5类SynchronousQueue的使用341
  • 10.3.6类DelayQueue的使用344
  • 10.3.7类LinkedTransferQueue的使用345
  • 10.4本章总结354

资源下载

资源下载地址1:https://pan.baidu.com/s/1n24Jx6t3uFtWnhQVsfVTeg

相关资源

网友留言