随笔分类 - java并发编程
摘要:以上代码构建了1个生产者线程,多个消费者线程: 1)生产者等待empty的信号去生产数据,并发送notEmpty信号通知所有消费者去消费数据; 2)消费者发送empty信号,并等待notEmpty信号去消费数据; 注意:条件对列很容易造成信号丢失,必须保证先校验、再等待、等待结束再校验一次这样的逻辑
阅读全文
摘要:一、简介 在Java并发编程中,“毒丸”指的是将一个对象放在队列当中,当得到这个对象的时候立即停止执行 下面是一个使用“毒丸”来取消任务的一个示例 如图所示,我们假设一个任务从开始到结束需要经历4个步骤,正常情况下4个步骤将会顺序执行。 而在任务的执行过程中,我们由于一些原因需要取消这个任务,那这个
阅读全文
摘要:一、简介 并发编程中我们经常创建异步线程来执行任务。但是,当异步任务之间存在依赖关系时,使得我们开发过程变得更加复杂。比如: 1、线程2依赖于线程1的执行结果 2、线程3依赖于线程1和线程2执行结果的合并 要实现以上两个异步线程的依赖,我们可能会采用等待/通知、消费队列或者一些比较麻烦的逻辑来控制异
阅读全文
摘要:一、简介 在hadoop的分布式计算框架MapReduce中,会经过两个过程Map过程和reduce过程。Map过程将任务并行计算,reduce汇总并行计算的结果,如图: MapReduce是在分布式环境中做分布式计算的,JDK1.7+以后再单机环境中也可以做类似的操作,它提供了一种ForkJoin
阅读全文
摘要:一、简介 默认的异步任务有些难以控制,有时候我们希望在当前线程获取异步任务的结果。FutureTask可以帮助我们实现 JDK文档:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/FutureTask.html
阅读全文
摘要:一、简介 在Java多线程中,我们要实现同步串行最早接触的就是synchronized关键字。 基本语法如下: sychronized关键字的锁主要有三种使用: 1)对象锁 2)类锁 3)字符串锁 二、示例 一、对象锁 最常见的写法,synchronized写在了成员方法上,这表示它以this为锁,
阅读全文
摘要:一、简介 1、操作系统 在早起的裸机时代,计算机非常地昂贵,而且也没有操作系统的概念,计算机从头到尾只能执行一个程序。如果程序在执行一个耗时的操作,那么在这个过程中,计算机就有大量的资源闲置在那里,这是非常浪费的。 而这个时候,操作系统的概念被提出了。在操作系统的控制下,一个计算机可以执行很多的程序
阅读全文
浙公网安备 33010602011771号