
concurrency
文章平均质量分 81
求索的布衣
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java程序员面试中的多线程问题
Java程序员面试中的多线程问题很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了Java线程方面一些典型的问题,这些问题经常被高级工程师所问到。 0、Java中多线程同步是什么?在多线程程序下,同步能控制对共享资源的访问转载 2013-11-25 10:34:46 · 513 阅读 · 0 评论 -
2.4.线程的同步和协作_读写锁
读写锁锁机制引入了读写锁特性:ReadWriteLock接口和唯一的实现类ReentrantReadWriteLock。读写锁是锁机制的最大改进之一,提供了将读和写分开处理的能力。ReentrantReadWriteLock有两个锁,一个是读操作锁,另一个是写操作锁。读操作锁允许多个线程同时访问,但是写操作锁只允许一个线程进行访问,在一个线程执行写操作时,其他线程不能执行读操作。在原创 2014-04-23 12:14:23 · 496 阅读 · 0 评论 -
2.3.线程的同步和协作_锁
锁synchronized是最基本的同步机制,Java5.0引入了另外一种更强大更灵活的同步机制:Lock接口及其实现类。Lock接口的引入使得同步机制不再局限于关键字,而可以在API一层实现,深远的影响了Java的并发基础设施。相比synchronized,Lock机制有以下优点:* 支持更灵活的同步代码块结构。使用synchronized关键字时,只能在同一个s原创 2014-04-23 12:12:40 · 408 阅读 · 0 评论 -
2.1.线程的同步和协作_基本同步
基本同步同步概述多个线程共享一个资源的场景非常常见,比如多个线程读或者写相同的数据等。为了防止共享资源可能出现的错误或数据不一致,需要有一些机制来防止错误的发生。临界区(Critical Section)是指访问共享资源的代码块,这个代码块在同一时间只允许一个线程执行。Java提供了同步机制来实现临界区。当一个线程试图访问一个临界区时,它使用同步机制查看是不是已经有其他线程原创 2014-04-22 15:38:26 · 720 阅读 · 0 评论 -
2.2.线程的同步和协作_基本协作
基本协作原创 2014-04-22 15:41:43 · 556 阅读 · 0 评论 -
2.11 线程间的数据交换
线程间的数据交换原创 2014-05-09 18:24:19 · 670 阅读 · 0 评论 -
3.1 创建线程执行器
创建线程执行器Executor Framework概述原创 2014-05-19 18:22:38 · 542 阅读 · 0 评论 -
4.1 Fork/Join框架概述
Fork/Join框架概述概述原创 2014-07-09 15:02:33 · 569 阅读 · 0 评论 -
3.2 获得执行器任务的结果
获得执行器任务的结果概述创建线程的基本方法:实现Runnable接口没有方法能够返回线程执行结果。Executor Framework允许各并发任务返回结果。这个能力通过以下两个两个接口实现:原创 2014-06-18 18:28:22 · 613 阅读 · 0 评论 -
4.2 ForkJoin_拆分任务
ForkJoin 拆分任务概述本章节用一个简单示例说明如何拆分任务。示例是更新一批产品的价格。任务类继承ForkJoinTask类,并复写execute方法,在execute方法中进行任务拆分或者价格更新。如果任务需要更新的产品数量大于10,它将拆分这些元素为两部分,并相应创建两个任务,再通过调用invokeAll方法来分配所拆分的任务,invokeAll方法是一个同步调用,这个任务将原创 2014-07-09 15:04:45 · 848 阅读 · 0 评论 -
4.3 ForkJoin_聚合任务结果
ForkJoin 聚合任务结果原创 2014-07-09 15:07:28 · 724 阅读 · 0 评论 -
1.6.线程基础_守护线程
守护线程Java有种线程叫做守护(Deamon)线程。这种线程优先级很低,通常是无限循环的,作为服务提供者。守护线程是的优先级的,而且当程序中只有守护线程时,程序会退出运行。所以守护线程不能做重要的工作,因为它不能保证什么时候被分配到资源,也可能会随时结束。创建守护线程很简单,只要调用Thread类的setDaemon方法即可。下面用守护线程演示一个时钟:原创 2014-04-21 18:11:03 · 448 阅读 · 0 评论 -
1.5.线程基础_线程异常处理
线程的异常处理原创 2014-04-21 18:09:43 · 530 阅读 · 0 评论 -
Java多线程面试问题集锦
Java多线程面试问题集锦 如果你即将去一家从事大型系统研发的公司进行Java面试,不可避免的会有多线程相关的问题。下面是一些针对初学者或者新手的问题,如果你已经具备良好的基础,那么你可以跳过本文,直接尝试针对进阶水平的Java多线程编程问题及解答。关联链接: Java multi-threading-1 | Java multi-threading-2转载 2013-11-25 10:36:37 · 634 阅读 · 0 评论 -
1.1.线程基础_创建线程
1.1.线程基础_创建线程随着多核CPU的普及,软件开发领域对程序的并行能力也越来越重视,Java平台从5.0版本开始一直到最新的8.0版本一直在优化Java程序的并发处理效率和新增新的并发API,本系列就集中讨论Java并发相关的技术。原创 2014-04-17 18:34:31 · 427 阅读 · 0 评论 -
1.2.线程基础_中断线程
线程基础_中断线程上一章节讨论了如何创建并运行线程,本章节讨论如何停止正在运行的线程,更准确的说法是,如何安全的停止正在运行的线程。因为线程内部的运行状态只有线程自身清楚,其他线程很难知道,所以安全停止线程的策略是给线程发出中断信号,然后由线程自身处理现场和退出线程。发出中断信号的方法是调用Thread类的**interrupt()**方法,线程如何接收中断信号?这原创 2014-04-17 18:38:06 · 525 阅读 · 0 评论 -
1.4.线程基础_线程组
线程组当线程变多后就带来了管理问题,JAVA平台提供了线程组进行线程的管理。这运行我们把一个线程组内的所有线程当成一个单一的单元。比如要中断线程组内的所有线程,只需要中断线程组即可。假设我们要中断10个线程,只需要把10个线程用一个线程组管理,然后中断线程组就可。实例代码如下:原创 2014-04-18 18:39:53 · 454 阅读 · 0 评论 -
1.3.线程基础_等待线程
等待线程有时候我们需要等待其他线程完成后当前线程才可以继续执行。回顾之前的示例可以看到主线程和其他线程是并发运行的,回顾一下1.2中程序执行的日志:原创 2014-04-18 18:38:02 · 526 阅读 · 0 评论 -
2.5.线程的同步和协作_锁的公平性
锁的公平性原创 2014-05-05 21:44:45 · 674 阅读 · 0 评论 -
2.7.资源并发访问控制
资源并发访问控制原创 2014-05-05 21:54:26 · 749 阅读 · 0 评论 -
2.8.等待多个并发完成
等待多个并发完成经常会有这种场景:在主线程中启动多个工作线程,然后主线程需要等待工作线程全部完成后再进行下一步处理。如何实现等待多个线程完成?用Thread.join方法?这种方式耦合性太强,而且太土了!Java5引入了新的机制,这个机制语义明确、功能强大、使用灵活,这就是**CountDownLatch**类。**CountDownLatch**类是同步辅助类,在完成一组正在其他线程中执原创 2014-05-05 22:04:23 · 616 阅读 · 0 评论 -
2.9.集合点同步
集合点同步上节讨论了如何实现等待并发线程完成,如果并发线程在一个节点需要等待其他的并发线程完成操作,而后才能继续处理,如何让并发线程能够在一点(这个点称之为集合点)等待其他线程?为更容易的处理这类问题,Java5引入了**CyclicBarrier**类,它也是一个同步辅助类,允许多个线程在某个点上进行同步。**CyclicBarrier**使用一个整数进行初始化,这个数是需要原创 2014-05-06 21:50:55 · 596 阅读 · 0 评论 -
2.10 并发任务的阶段性运行
并发任务的阶段性运行Java并发API提供了一个更复杂、更强大的同步辅助类:Phaser,它允许执行并发多阶段任务。当我们有并发任务并且需要分解成几步执行时,这种机制就非常适用。Phase类机制实在每一步结束的位置对并发线程进行同步,当所有线程都完成额这一步才允许执行下一步。Phaser类初始化时需要指定参与同步操作的任务数,同时也可以动态的增减任务数。这里用一个简单例子来原创 2014-05-07 19:09:21 · 567 阅读 · 0 评论 -
3.4 取消任务
取消任务概述使用执行器时,不需要管理线程,只需要实现Runnable或Callable任务并发送任务给执行器即可。执行器负责创建线程,管理线程池中的线程,当线程不再需要时就销毁它们。有时候,我们可能需要取消已经发送给执行器的任务,这种情况下,可以使用Future接口的cancel方法来取消任务。cancel方法取消任务的执行有如下几种:* 如果任务已经完成,或者原创 2014-07-09 14:59:53 · 566 阅读 · 0 评论