摘要: 翻译: 它适用于这样一种情况:你希望创建一组任务,它们并行地执行工作,然后在进行下一个步骤之前,进行等待,直到所有任务完成,有点像join。它使得所有的并行任务都将在栅栏处列队,因此可以一致地向前移动。这非常像CountDownLatch.只是后者只触发一次时间,而前者可以多次重用。每个线程调用aw 阅读全文
posted @ 2017-04-20 23:12 soar_hu 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 它被用来同步一个或者多个任务,轻质它们等待由其他任务执行的一组操作完成。 你可以向 CountDownLatch 对象设置一个初始计数值,任何在这个对象上调用 await() 的方法都将阻塞,直到这个计数值为0。其他任务在结束其工作时,可以在该对象上调用 countDown() 来减小这个数值,这个 阅读全文
posted @ 2017-04-20 23:02 soar_hu 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。 BlockingQueue 方法以四种形式出现,对于不能立即满足但可能在将来某一时刻可以满足的操作,这四种形式的处理方式不同:第一种是抛出一个异常,第二种是返回一个特殊值(null 或 fal 阅读全文
posted @ 2017-04-20 18:54 soar_hu 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 线程中断我们已经直到可以使用 interrupt() 方法,但是你必须要持有 Thread 对象,但是新的并发库中似乎在避免直接对 Thread 对象的直接操作,尽量使用 Executor 来执行所有的请求。如果你在 ExecutorService 上调用 shutdownNow() .那么它将发送 阅读全文
posted @ 2017-04-20 15:54 soar_hu 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 一. 线程状态类型1. 新建状态(New):当线程对象被创建时。它只会短暂的处于这种状态。此时它已经分配了必须的系统资源。并且执行了初始化。此刻线程已经有资格获得CPU时间了。之后调度器将把这个线程转变为可运行或者阻塞状态。2. 就绪状态(Runnable):该线程的start()方法被其他线程调用 阅读全文
posted @ 2017-04-20 13:37 soar_hu 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 下面用javap分析一下为什么i++不安全 执行 javap -c TestIncrement 得到的结果为: 方法f1()中, 1:(getField)进行了获取filed i的操作, code 2 2:然后取常量值1, code 5 3:再把取到的值1加到代号2取到的值上, code 6 4:再 阅读全文
posted @ 2017-04-20 11:49 soar_hu 阅读(1143) 评论(0) 推荐(0) 编辑