实现所需关键技术

Java多线程技术

多线程是这样一种机制,它允许在程序中并非执行多个指令流,每个指令流都被称为一个线程,线程间相互独立。

在Java中提供了java.lang.Thread来进行多线程编程。在基于Java的应用程序中可以通过以下两种方式来创建线程对象。

  1. 声明一个Thread类的子类,并覆盖其run()方法。
  2. 声明一个实现Runnable接口的类,并实现run()方法。

Thread类提供了大量的方法来控制线程的执行过程。要触发一个新的线程,需要调用start()方法。在调用start()方法时,讲创建一个新的控制线程,新线程进入可运行状态,它将向线程调度器注册这个线程,然后它将调用run()方法。

Thread中定义的一些方法:


方法


说明


start()


新建的线程进入可运行状态


run()


线程进入正在运行状态


wait()


线程进入等待状态,等待被唤醒


notify()/notifyAll()


唤醒其他的线程


yield()


线程放弃执行,使其他优先级不低于此线程的线程有机会运行


getPriority()/setPriority()


获得/设置线程的优先级


suspend()


挂起该线程


resunme()


唤醒该线程,与suspend()方法相对


sleep()


线程睡眠指定的一段时间


join()


调用这个方法的主线程,会等待加入的子线程完成

?

详细可以看下别人的博客:http://www.cnblogs.com/dolphin0520/p/3920357.html


在实现下载工具系统的过程中,需要定义一个线程下载类,这也是该系统的核心技术。下面是线程现在类的大框架。

/**

* 下载线程类

*/

public class DownLoadThread extends Thread{

????public DownLoadThread(DownLoadInfo downInfo, int threadId){

????????//构造函数

????}

?

????/**

???? * 获取线程下载是否结束标志

???? */

????public boolean ifFinished(){

????????return finished;

????}

?

????/**

???? * 获取线程下载是否出错标志

???? */

????public boolean isError(){

????????return err;

????}

?

????//覆盖Thread类中的run()方法

????public void run(){

????????/**

???? ???? * 实现根据下载的起始位置和结束位置下载文件某一段的逻辑代码

???? ???? */

????}

}

?

Java I/O流技术

为了进行数据的输入/输出操作,Java中把不同的输入/输出源抽象表述为"流"(stream)。Java.io包中定义了多个流类型来实现输入/输出功能。

按照流的方向划分,可以分为输入流和输出流。

  • 输入了:只能从中读取字节数据,而不能向其写入数据。
  • 输出流:只能向其写入数据,而不能从中读取数据。

按照流所处理的数据类型划分,可以分为字节流和字符流。

  • 字节流:用于处理字节数据。
  • 字符流:用于处理Unicode字符数据。

按照流是否可以直接访问资源划分,可以分为节点流和处理流。

  • 节点流:可以从(向)一个特定的I/O设备读(写)数据的流,节点流也被称为低级流。
  • 处理流:用来实现对一个已存在的流的连接和封装,是通过所封装的流的功能,调用实现数据读/写操作的流,处理流也被称为高级流。

Java.io包支持两种类型的流,包括二进制数据的字节流和包括字符数据的字符流。在读/写数据时,这两种流以不同的方式工作。

在java.io包中,InputStream和OutPutStream类及它们的子类均表示字节流,并且提供了读/ 写二进制数据的方法。

InputStream类中包含3个read()方法,用来从数据流中读取二进制数代码。

输入流的基本方法:

  • read(),这个方法在InputStream类中是抽象的,因此它必须定义在子类中。此方法以int类型返回流的下一个可读字节。如果到达流的末尾,则方法的返回值为-1,如果I/O发送错误,将抛出IOException类型异常。
  • read(byte[] array),此方法将流中字节读到数组的连续元素中,读出的字节数据最大为array.length的值。在读取完输入数据或是检测到流尾时,才从本方法返回。本方法返回读取的字节个数,或者如果因为到达流尾而没有读取任何字节则返回-1,。如果I/O发送错误,将抛出IOException类型异常。如果传给方法的参数为null,则派出NullPointerException异常。
  • read(byte[] buffer, int offser, int length),此方法将数据读入一个字节数组,从数组的offert指定的位置开始存放,并用length来指定读取的最大字节数。

输入流的其他方法如下:

  • void close(),关闭流。
  • int available(),返回可以从中读取的字节流。
  • long skip(long n),在输入流中跳过n个字节,将实际跳过的字节数返回。
  • boolean markSupported(),判断流是否支持标记功能、
  • void mark(int readlimit),在支持标记的输入流的当前位置设置一个标记。
  • void reset(),返回到流的上一个标记。

?

OutputStream类包含3个write()方法,用来向数据流写入二进制代码。这些操作与InPutStream类的read()方法向对应。

输出流的基本方法:

  • void write(int c)
  • void write(byte[] buffer)
  • void write(byte[] buffer, int offdet, int length)

?

详细可以看下别人的博客:http://blog.csdn.net/yczz/article/details/38761237


在实现下载工具系统的过程中主要涉及两部分的Java流操作,一个是从打开的URL连接中获得网络的输入流,一个是想文件写入内容的输出流。

时间: 2024-08-30 03:11:07

实现所需关键技术的相关文章

中文事件抽取关键技术研究(谭红叶 博士毕业论文)

中文事件抽取关键技术研究(谭红叶 博士毕业论文) 事件抽取的定义 ACE2005 将该项任务定义为:识别特定类型的事件,并进行相关信息的确定和抽取,主要的相关信息包括:事件的类型和子类型.事件论元角色等.根据这个定义,可将事件抽取的任务分成两大核心子任务:(1)事件的检测和类型识别:(2)事件论元角色的抽取.除此以外,由于绝大部分的论元角色都是实体,因此实体的识别也是事件抽取的一项基本任务. 信息抽取的定义 Andrew McCallum所提出的定义具有普遍意义.他将信息抽取定义为(A.McCa

Java进阶(三)多线程开发关键技术

原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自Jason's Blog,原文链接 http://www.jasongj.com/java/multi_thread/ sleep和wait到底什么区别 其实这个问题应该这么问--sleep和wait有什么相同点.因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点. wait方法是Object类的方法,这意味着所有的Java类都可以调用该方法.sleep方法是Thread类的静态方法. wait是在当前线程持有wait对象锁

大数据流式计算:关键技术及系统实例

孙大为1, 张广艳1,2, 郑纬民1 摘要:大数据计算主要有批量计算和流式计算两种形态,目前,关于大数据批量计算系统的研究和讨论相对充分,而如何构建低延迟.高吞吐且持续可靠运行的大数据流式计算系统是当前亟待解决的问题且研究成果和实践经验相对较少.总结了典型应用领域中流式大数据所呈现出的实时性.易失性.突发性.无序性.无限性等特征,给出了理想的大数据流式计算系统在系统结构.数据传输.应用接口.高可用技术等方面应该具有的关键技术特征,论述并对比了已有的大数据流式计算系统的典型实例,最后阐述了大数据流

5G关键技术评述

业内重大事件: 张  平:无线通信领域专家,北京邮电大学教授,博士生导师,现任北京邮电大学无线新技术研究所(WTI)所长.泛网无线通信教育部重点实验室主任以及中德软件研究所副所长.张平教授是国家宽带无线通信重大专项建议书起草人之一,并担任信息产业部第三代移动通信技术实验专家组成员.国家863未来移动通信FuTURE计划项目总体组成员.中国FuTURE论坛副主席.世界无线研究论坛(WWRF)愿景委员会2005年副主席等,享受政府特殊津贴,北京市第十一届政协委员. 陶运铮:北京邮电大学博士生,主要研

ARM流水线关键技术分析与代码优化

引 言    流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构.通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能. ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作.ALU操作以及相关器件之间的数据传输.执行单元的工作往 往占用多个时钟周期,从而成为系统性能的瓶颈

网络分流器-网络分流器-5G的关键技术第一篇

戎腾网络分流器是网络安全领域重要的基础装备!一般网安和信安行业称之为旁路设备.探针.镜像.流量×××.网络分流器等! 随时时代的发展,5G也越来越临近,今天网络分流器来讲讲5G的此许关键技术,希望对您有些启示和帮助!核心网采集器 按照3GPP的定义,5G具备高性能.低延迟与高容量特性,而这些优点主要体现在毫米波.小基站.Massive MIMO.全双工以及波束成形这五大技术. 其中Massive MIMO和波束成形紧密相关. 1.毫米波 无线传输增加传输速率一般有两种方法,一是增加频谱利用率,二

5G:认识5G关键技术

5G:认识5G关键技术 1.SDR 定义软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现.频带.空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件. 所谓软件无线电,其关键思想是构造一个具有开放性.标准化.模块化的通用硬件平台,各种功能,如工作频段.调制解调类型.数据格式.加密模式.通信协议等,用软件来完成,并使宽带A/D和D/A转换器尽可能靠近天线,以研制出具有高度灵活性.开放性的新

基于复杂网络隐藏度量空间的互联网自适应可扩展路由理论与关键 技术研究

随着信息技术的迅速发展与互联网创新应用的不断涌现,互联网体系结构所对应的基本能力与当今人们对互联网规模.功能.性能.服务和安全等方面的需求所对应的能力要求产生了明显矛盾.构建规模更大,性能更高和可扩展的下一代互联网体系结构是解决这一矛盾的主要途径.在此背景下,需重新反思互联网信息传递.转发.路由.拥塞控 制等基本问题.本项目重点研究互联网路由系统规模可扩展性问题,其主要内容包括:互联网拓扑特征及其演化模型研究,基于拓扑特征的可扩展路由模型及其优化方法与关键技术研究. 本项目已取得了如下一些结果:

Spark原理及关键技术点

Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点:但不同于MapReduce的是--Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法. RDD RDD(Resi