多线程
文章平均质量分 56
cc-lady
java小菜鸟一枚,大家多多指教哟!
展开
-
通知线程实例-开始所经历时间的程序,每5秒打印一条消息...
题目: 1.开始所经历时间的程序,每5秒打印一条消息。 2.消息打印线程由事件打印线程通知,在不改变时间线程打印线程的前提下,增加一个每隔7秒打印另一条消息的线程代码:public class Controller extends Thread{ private Date date ;//对象锁 private boolean flag = false;//控制唤醒或等待线程原创 2016-11-18 10:42:02 · 628 阅读 · 0 评论 -
多线程之Callable/Future获取多个任务结果并进行汇总
许多不能立即获得计算结果的延迟计算,都可以使用Callable/Future这种形式。例如数据库查询等。Callable是对任务的一种抽象,通过在Executor中包含封装的Callable任务来执行,将结果封装为Future。Future提供了相应的方法判断是否已经完成,以及获取任务的结果(future.get())等方便进行操作。Get方法的行为取决于任务的状态(尚未开始、正在运行、已完成)...原创 2018-12-10 11:42:27 · 9084 阅读 · 2 评论 -
多线程之Barrier栅栏获取多个任务结果并进行汇总
利用直接在一个线程中求和是效率非常低的,我们通过栅栏,先将这个问题拆分成一系列相互独立的子问题,通过栅栏后,将子问题的问题汇集起来,进行全部的求解。CyclicBarrier是一个很好的实现,它的构造方法中有一个Runnable参数,这个是最后进行汇总的方法,比如我们最后将计算结果求和,这里就是求和的执行。await()方法利用栅栏特性,等待所有线程求完元素之和再计算平均值。书上具体的介绍...原创 2018-12-10 11:32:42 · 845 阅读 · 0 评论 -
多线程之任务时限
有的时候我们希望在一定时间内获取这个任务的结果,如果没有获取到就结束这个任务。这个时候需要对任务的时间做一个限制。Future.get(long timeout, TimeUnit unit)future.get方法提供了这样的参数,当结果可用时,它将立即返回,如果在指定时限内没有计算出结果,那么将抛出TimeoutException。当任务超时后,future也提供了一定的方法来取消任务...原创 2018-12-12 14:57:03 · 561 阅读 · 0 评论 -
多线程之线程池方式--练习生产者消费者模式
虽然Executor是个简单的接口,但它却为灵活且强大的异步任务执行框架提供了基础,该框架能支持多种不同类型的任务执行策略。它提供了一种标准的方法将任务的提交过程与执行过程解耦开来,并用Runnable来表示任务。Executor基于生产者-消费者模式,提交任务的操作相当于生产者(生成待完成的工作单元),执行任务的线程则相当于消费者(执行完这些工作单元)。如果要在程序中实现一个生产者-消费者的设...原创 2018-12-05 16:25:08 · 711 阅读 · 0 评论 -
多线程之阻塞队列BlockingQueue简化生产者消费者模式
在基于阻塞队列构建的生产者—消费者设计中,当数据生成时,生产者把数据放入队列,而当消费者准备处理数据时,将从队列中获取数据。生产者不需要知道消费者的标识或数量,或者它们是否是唯一的生产者,而只需将数据放入队列即可。同样,消费者也不需要知道生产者是谁,或者工作来自何处。BlockingQueue简化了生产者—消费者设计的实现过程,它支持任意数量的生产者和消费者。因为BlockingQueue内部自...原创 2018-11-19 14:41:47 · 241 阅读 · 0 评论 -
多线程之同步容器类
同步容器类此种同步容器类(synchronized开头的方法)在底层将每种add,remove等方法前加上了synchronized修饰。1.在同步容器中,这些复合操作在没有客户端加锁的情况下仍然是线程安全的,但当其他线程并发地修改容器时,它们可能会表现出意料之外的行为。2.可以通过在客户端加锁来解决不可靠迭代的问题,但要牺牲一些伸缩性。这同样会导致其他线程在迭代器件无法访问它,因此降低了...原创 2018-11-21 15:53:14 · 209 阅读 · 0 评论 -
多线程之进阶Lock替换掉synchronized--练习生产者消费者模型
学习到Lock对象啦,用它替换掉synchronized之前两个小例子。这里等待/唤醒模式,用了Conditon。结合之前的生产者消费者例子,很好理解。其他类不变,只替换掉MyStack类:package com.cc.p_c_stack_mutiList2;import java.util.ArrayList;import java.util.List;import java.ut...原创 2018-10-16 10:27:38 · 354 阅读 · 0 评论 -
多线程之进阶Lock替换掉synchronized--模拟多窗口共同卖票
学习到Lock对象啦,用它替换掉synchronized之前两个小例子。效果差不多的,不过他有Condition特有的功能,这里没有体现出来。主要看替换点,结合前面synchronized写法,很好理解。package com.cc.sellticket3;import java.util.concurrent.locks.ReentrantLock;/* * 卖票服务 */pub...原创 2018-10-16 10:23:16 · 323 阅读 · 0 评论 -
多线程--练习生产者消费者模型
主要是wait/notify的理解和使用。package com.cc.p_c_stack_mutiList;//消费者public class C { private MyStack myStack; public C(MyStack myStack) { super(); this.myStack = myStack; } public void popServic...原创 2018-10-09 15:28:47 · 1052 阅读 · 0 评论 -
多线程--模拟多窗口卖票
学习java多线程知识点–线程安全与同步 基础练习–模拟多窗口卖票程序。1.多窗口卖票–各自卖票package com.cc.sellticket;/** * 模拟多窗口卖票 -- 每个窗口各自卖票 * @author CC * */public class SellTicket1 extends Thread{ private int tickets = 5...原创 2018-09-11 11:01:17 · 933 阅读 · 0 评论 -
多线程之CompletionService获取多个任务结果并进行汇总
上一章末尾也说道,这个接口,更好地实现了任务提交任务获取这种程序,更加方便。例子如下:package com.cc.mutilineExample.callableAndFuture.test5_completion_future;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;...原创 2018-12-10 11:44:52 · 2932 阅读 · 0 评论