零基础
对IT设计有兴趣,希望从事IT行业
用SQL语句数据库查询数据的直观方法提供一种类似于Jaaga的高级抽象。此样式将处理的元素集合视为一个流,流在管道中传输,并可在管道节点上处理,如过滤、排序、聚合等。
流(Stream)是数据源中的一个元素队列,它支持聚合操作,元素是组成队列的特定类型的对象。JAVA中的Stream不存储元素,而是根据需要进行计算。
序言
PipedInputStream和PipedOutputStream是为跨线程传输字节数据而设计的。他们总是成对出现,而且在使用时,他们只能工作在两个不同的线程中,在一个线程中输入和输出流都会导致死锁。在网络上有许多关于io包下这两个api的介绍。但要找到一个编写PipedInputStream的使用场景是非常困难的,所以本文结合实际业务讨论PipedInputStream的应用。
原理简介
PipedInputStream和PipedOutputStream都是输出流写数据,输入流读取数据,对于PipedOutputStream,它具有一个sink属性,类型为PipedInputStream,它在PipedOutputStream中接收字节数据。PipedInputStream中定义了一个字节数组buffer,该buffer的缺省大小为1024bit,用于缓冲数据传输。这样,就变成了PipedOutputStream将数据写入buffer中,当buffer被写入满时,则用notifyAll()唤醒正在读取数据的线程,然后在阻塞1s之后继续尝试写入数据。PipedInputStream从buffer中读取数据,当数据读取完毕buffer为空时,便notifyAll()唤醒写入的线程可以读取数据,然后在阻塞1s后继续尝试读取。PipedOutputStream方面的数据写完后,调用close()方法,在PipedInputStream中标记closedByWriter=true。现在,从buffer中读取数据返回-1。识别数据读完已到达流末尾。
用例概述。
以上代码演示了在一个线程中写入数据,然后在main线程中读取数据的过程中跨线程传输数据。
对IT设计有兴趣,希望从事IT行业
强化自己能力,加强专业技能
丰富职场技能,毕业不失业
提升专业水平,轻松升职加薪
大数据
智能物联网
Unity游戏开发
网络安全
互联网营销
影视剪辑包装
达内国际集团经过14年运营,以中关村科技园区为依托,在中国软件业发达城市——北京、上海、广州、深圳、大连、南京、武汉、杭州、西安、苏州、成都、太原40多个大城市,建立140多个职业教育中心,年培训5万名软件人才,已累计为IBM、微软、摩托罗拉、华为、中软、用友、Yahoo、阿里巴巴、TOM、新浪、搜狐、百度、联想、神州数码、大唐电信、亚信等知名IT企业培养输送了30万名中高级软件人才,是中国目前最大的人才培养与输送的提供商。除中高端IT人才实训外,达内时代科技集团同样致力于IT 人才输送、教育平台建设、软件研发等综合服务,目前,已形成包括 人才实训中心、软件研发中心、软件人才中心、IT 教育中心四大人才服务模块达内国际集团逐渐形成以IT培训为主的多元化、综合性的职业教育及人才服务领导品牌。
HTML5
Java
Python
全链路设计
云计算
软件测试