gitextract_yapqjxir/ ├── .idea/ │ ├── .name │ ├── codeStyleSettings.xml │ ├── compiler.xml │ ├── copyright/ │ │ └── profiles_settings.xml │ ├── encodings.xml │ ├── findbugs-idea.xml │ ├── misc.xml │ ├── modules.xml │ ├── scopes/ │ │ └── scope_settings.xml │ ├── uiDesigner.xml │ └── vcs.xml ├── 01-02-线程的创建和运行/ │ ├── 01-02-线程的创建和运行.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Calculator.java ├── 01-03-线程信息的获取和设置/ │ ├── 01-03-线程信息的获取和设置.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Calculator.java ├── 01-04-线程的中断/ │ ├── 01-04-线程的中断.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── PrimeGenerator.java ├── 01-05-线程中断的控制/ │ ├── 01-05-线程中断的控制.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── FileSearch.java ├── 01-06-线程的休眠和恢复/ │ ├── 01-06-线程的休眠和恢复.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── FileClock.java ├── 01-07-等待线程的终止/ │ ├── 01-07-等待线程的终止.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── DataSourcesLoader.java │ └── NetworkConnectionsLoader.java ├── 01-08-守护线程的创建和运行/ │ ├── 01-08-守护线程的创建和运行.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── event/ │ │ └── Event.java │ └── task/ │ ├── CleanerTask.java │ └── WriterTask.java ├── 01-09-线程中不可控异常的处理/ │ ├── 01-09-线程中不可控异常的处理.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── handler/ │ │ └── ExceptionHandler.java │ └── task/ │ └── Task.java ├── 01-10-线程局部变量的使用/ │ ├── 01-10-线程局部变量的使用.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ ├── Main.java │ │ └── SafeMain.java │ └── task/ │ ├── SafeTask.java │ └── UnsafeTask.java ├── 01-11-线程分组/ │ ├── 01-11-线程分组.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Result.java │ └── SearchTask.java ├── 01-12-线程组中不可控制异常的处理/ │ ├── 01-12-线程组中不可控制异常的处理.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── group/ │ │ └── MyThreadGroup.java │ └── task/ │ └── Task.java ├── 01-13-使用工厂类创建线程/ │ ├── 01-13-使用工厂类创建线程.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── factory/ │ │ └── MyThreadFactory.java │ └── task/ │ └── Task.java ├── 02-02-使用synchronized实现同步方法-问题/ │ ├── 02-02-使用synchronized实现同步方法-问题.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Account.java │ ├── Bank.java │ └── Company.java ├── 02-02-使用synchronized实现同步方法-问题解决/ │ ├── 02-02-使用synchronized实现同步方法-问题解决.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Account.java │ ├── Bank.java │ └── Company.java ├── 02-03-使用非依赖属性实现同步/ │ ├── 02-03-使用非依赖属性实现同步.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Cinema.java │ ├── TicketOffice1.java │ └── TicketOffice2.java ├── 02-04-在同步代码中使用条件/ │ ├── 02-04-在同步代码中使用条件.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Consumer.java │ ├── EventStorage.java │ └── Producer.java ├── 02-05-用锁实现同步/ │ ├── 02-05-用锁实现同步.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Job.java │ └── PrintQueue.java ├── 02-06-使用读写锁实现同步数据访问/ │ ├── 02-06-使用读写锁实现同步数据访问.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── PricesInfo.java │ ├── Reader.java │ └── Writer.java ├── 02-07-修改锁的公平性/ │ ├── 02-07-修改锁的公平性.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Job.java │ └── PrintQueue.java ├── 02-08-在锁中使用多条件/ │ ├── 02-08-在锁中使用多条件.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ ├── Consumer.java │ │ └── Producer.java │ └── utils/ │ ├── Buffer.java │ └── FileMock.java ├── 02-09-应用例子/ │ ├── 02-09-应用例子.iml │ └── src/ │ └── com.concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── BuildStats.java │ ├── Sensor1.java │ └── Sensor2.java ├── 03-02-资源并发控制访问/ │ ├── 03-02-资源并发控制访问.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Job.java │ └── PrintQueue.java ├── 03-03-资源的多副本的并发访问控制/ │ ├── 03-03-资源的多副本的并发访问控制.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Job.java │ └── PrintQueue.java ├── 03-04-等待多个并发事件的完成/ │ ├── 03-04-等待多个并发事件的完成.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Participant.java │ └── VideoConference.java ├── 03-05-在集合点的同步/ │ ├── 03-05-在集合点的同步.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ ├── Grouper.java │ │ └── Searcher.java │ └── utils/ │ ├── MatrixMock.java │ └── Results.java ├── 03-06-并发阶段任务的运行/ │ ├── 03-06-并发阶段任务的运行.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── FileSearch.java ├── 03-07-并发阶段任务中的阶段切换/ │ ├── 03-07-并发阶段任务中的阶段切换.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyPhaser.java │ └── Student.java ├── 03-08-并发任务间的数据交换/ │ ├── 03-08-并发任务间的数据交换.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Consumer.java │ └── Producer.java ├── 04-02-创建线程执行器/ │ ├── 04-02-创建线程执行器.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Server.java │ └── Task.java ├── 04-03-创建固定大小的线程执行器/ │ ├── 04-03-创建固定大小的线程执行器.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Server.java │ └── Task.java ├── 04-04-在执行器中执行任务并返回结果/ │ ├── 04-04-在执行器中执行任务并返回结果.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── FactorialCalculator.java ├── 04-05-运行多个任务并处理第一个结果/ │ ├── 04-05-运行多个任务并处理第一个结果.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── TaskValidator.java │ └── UserValidator.java ├── 04-06-运行多个任务并且处理所有结果/ │ ├── 04-06-运行多个任务并且处理所有结果.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Result.java │ └── Task.java ├── 04-07-在执行器中延时执行任务/ │ ├── 04-07-在执行器中延时执行任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Task.java ├── 04-08-在执行器中周期性执行任务/ │ ├── 04-08-在执行器中周期性执行任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Task.java ├── 04-09-在执行器中取消任务/ │ ├── 04-09-在执行器中取消任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Task.java ├── 04-10-在执行器中控制任务的完成/ │ ├── 04-10-在执行器中控制任务的完成.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── ExecutableTask.java │ └── ResultTask.java ├── 04-11-在执行器中分离任务的启动与结果的处理/ │ ├── 04-11-在执行器中分离任务的启动与结果的处理.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── ReportGenerator.java │ ├── ReportProcessor.java │ └── ReportRequest.java ├── 04-12-处理在执行器中被拒绝的任务/ │ ├── 04-12-处理在执行器中被拒绝的任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── RejectedTaskController.java │ └── Task.java ├── 05-02-创建Fork-Join线程池/ │ ├── 05-02-创建Fork-Join线程池.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ └── Task.java │ └── utils/ │ ├── Product.java │ └── ProductListGenerator.java ├── 05-03-合并任务的结果/ │ ├── 05-03-合并任务的结果.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ ├── DocumentTask.java │ │ └── LineTask.java │ └── utils/ │ └── DocumentMock.java ├── 05-04-异步运行任务/ │ ├── 05-04-异步运行任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── FolderProcessor.java ├── 05-05-在任务中抛出异常/ │ ├── 05-05-在任务中抛出异常.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Task.java ├── 05-06-取消任务/ │ ├── 05-06-取消任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ └── TaskManager.java │ └── utils/ │ ├── ArrayGenerator.java │ └── SearchNumberTask.java ├── 06-02-使用非阻塞式线程安全列表/ │ ├── 06-02-使用非阻塞式线程安全列表.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── AddTask.java │ └── PollTask.java ├── 06-03-使用阻塞式线程安全列表/ │ ├── 06-03-使用阻塞式线程安全列表.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── Client.java ├── 06-04-使用按优先级排序的阻塞式线程安全列表/ │ ├── 06-04-使用按优先级排序的阻塞式线程安全列表.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Event.java │ └── Task.java ├── 06-05-使用带有延迟元素的线程安全列表/ │ ├── 06-05-使用带有延迟元素的线程安全列表.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Event.java │ └── Task.java ├── 06-06-使用线程安全可遍历映射/ │ ├── 06-06-使用线程安全可遍历映射.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── task/ │ │ └── Task.java │ └── utils/ │ └── Contact.java ├── 06-07-生成并发随机数/ │ ├── 06-07-生成并发随机数.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── TaskLocalRandom.java ├── 06-08-使用原子变量/ │ ├── 06-08-使用原子变量.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Account.java │ ├── Bank.java │ └── Company.java ├── 06-09-使用原子数组/ │ ├── 06-09-使用原子数组.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Decrementer.java │ └── Incrementer.java ├── 07-02-定制ThreadPoolExecutor类/ │ ├── 07-02-定制ThreadPoolExecutor类.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ ├── executor/ │ │ └── MyExecutor.java │ └── task/ │ └── SleepTwoSecondsTask.java ├── 07-03-基于优先级的Executor类/ │ ├── 07-03-基于优先级的Executor类.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ └── MyPriorityTask.java ├── 07-04-实现ThreadFactory接口生成定制线程/ │ ├── 07-04-实现ThreadFactory接口生成定制线程.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyTask.java │ ├── MyThread.java │ └── MyThreadFactory.java ├── 07-05-在Executro对象中使用ThreadFactory/ │ ├── 07-05-在Executro对象中使用ThreadFactory.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyTask.java │ ├── MyThread.java │ └── MyThreadFactory.java ├── 07-06-定制运行在线程池中的任务/ │ ├── 07-06-定制运行在线程池中的任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyScheduledTask.java │ ├── MyScheduledThreadPoolExecutor.java │ └── Task.java ├── 07-07-通过实现ThreadFactory接口为Fork-Join框架生成定制线程/ │ ├── 07-07-通过实现ThreadFactory接口为Fork-Join框架生成定制线程.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyRecursiveTask.java │ ├── MyWorkerThread.java │ └── MyWorkerThreadFactory.java ├── 07-08-定制运行在Fork-Join框架中的任务/ │ ├── 07-08-定制运行在Fork-Join框架中的任务.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyWorkerTask.java │ └── Task.java ├── 07-09-现实定制Lock类/ │ ├── 07-09-现实定制Lock类.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── MyAbstractQueuedSynchronizer.java │ ├── MyLock.java │ └── Task.java ├── 07-10-实现基于优先级的传输队列/ │ ├── 07-10-实现基于优先级的传输队列.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── Consumer.java │ ├── Event.java │ ├── MyPriorityTransferQueue.java │ └── Producer.java ├── 07-11-实现自己的原子对象/ │ ├── 07-11-实现自己的原子对象.iml │ └── src/ │ └── com/ │ └── concurrency/ │ ├── core/ │ │ └── Main.java │ └── task/ │ ├── ParkingCounter.java │ ├── Sensor1.java │ └── Sensor2.java ├── README.md └── Template/ └── Template.iml