`
JAVA天地
  • 浏览: 673979 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

编写该多线程下载程序遇到的问题

阅读更多

在写多线程下载程序的时候,也遇到了不少的问题,不过,有的解决了,有的没有解决,这里都附于下面,如果有愿意给答案的朋友,兄弟感激不尽:

1、请问如何用一个线程去监视已经在运行的线程是否已经结束?

状态:解决

]解决方式:本人

解决答案:

在主程序中定义一个全局静态的boolean数组,每启动一个线程就把该数组对应的值设为false,然后运行完后,就把线程对应的数组设为true.
另外设一个监视进程,循环检测当前数组中的所有值都为true,如果是那就表示所有启动的线程已经结束,就可以做后面的工作了,如文件的合并.

2、我欲网络文件在大上,利用HttpURLConnection,可是我按下面的顺利写却报"已经连接"错误:
urlc = (HttpURLConnection) url.openConnection();
TotalSize=Long.parseLong(urlc.getHeaderField("Content-Length"));
urlc.setRequestProperty("RANGE", "bytes="+fileSize+"-");
urlc.setRequestProperty("Accept","image/gif,image/x-xbitmap,application/msword,*/*");
但如果我这样就不会出错,换一下第一句的位置:
urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("RANGE", "bytes="+fileSize+"-");
urlc.setRequestProperty("Accept","image/gif,image/x-xbitmap,application/msword,*/*");
TotalSize=Long.parseLong(urlc.getHeaderField("Content-Length"));
可是这样在断点续传的时候取得的总文件大小就只有现在需要时的大小,不能够满足程序的要求,因为我要计算文件是否已经下载完毕,于是我就把程序改成了这样,采用先断开再次连接,这样虽然可以达到要求,可是,这样先断开再次联接这势必造成资源的浪费,请问有什么好的方式?
urlc = (HttpURLConnection) url.openConnection();
urlc.disconnect();
urlc = (HttpURLConnection) url.openConnection();TotalSize=Long.parseLong(urlc.getHeaderField("Content-Length"));
urlc.setRequestProperty("RANGE", "bytes="+fileSize+"-");
urlc.setRequestProperty("Accept","image/gif,image/x-xbitmap,application/msword,*/*");

状态:未解决

3、将小数组的内容组合到大数组中,减少写硬盘的次数

写一个下载程序,可是,如果将希望减少写硬盘的次数,
有一个小的字节数组为1024,这样得到内容就去写硬盘,
都知道操作I/O是很费时间的,我这里想另个高一个大的字节数组,如果容量为50*1024,这样就可以明显的减少写硬盘的时间开销,可是这里如何更好的将小数组的内容合并到大数组中去呢,是每一次都循环吗,那如果我下载一个1024*1000即时的文件,那不是要循环:1024*1000次,这明显没有必要,请问有没有更简单的方法?


状态:未解决

如果有那位朋友愿意,本人非常感谢。

分享到:
评论

相关推荐

    编写多线程的 Java 应用程序

    在编写多线程Java程序时,开发者需要考虑线程安全、死锁、活锁和资源竞争等问题。理解线程的基本原理和使用适当的同步机制是成功构建可靠多线程程序的关键。Java的并发工具库,如java.util.concurrent包,提供了更多...

    http多线程下载程序

    为了解决这个问题,开发者们引入了多线程下载技术,通过同时发起多个下载请求,显著提升了文件下载速度。本文将深入探讨一个基于Winsock库实现的HTTP多线程下载程序,分析其工作原理以及如何进行子文件的下载与合并...

    多线程应用程序设计

    2. **多线程程序设计与实现**:利用pthread库函数编写多线程程序。在这个过程中,需要学习如何创建线程、管理线程间的同步与通信,以及如何处理线程生命周期中的各种问题。 3. **实验过程中的常见问题解决**:在实验...

    c# 多线程文件下载程序

    在C#编程中,多线程文件下载是一种提高下载效率的...以上就是关于“C#多线程文件下载程序”的核心知识点和实现细节,这个程序的实现涉及到C#语言基础、.NET框架、多线程编程、网络编程以及文件操作等多个方面的知识。

    一个多线程示例程序及多线程常见问题介绍

    总之,通过分析这个标题和描述,我们可以预期这个压缩包中包含的示例将帮助我们理解如何在C++Builder环境下创建和管理多线程程序,并解决可能出现的问题。学习这个示例将有助于提升我们在多线程编程方面的技能,使...

    vc_多线程下载多线程下载

    在计算机编程领域,多线程下载是一种提高程序执行效率,特别是网络数据传输速度的技术。针对“vc_多线程下载”这一主题,我们将深入探讨如何...理解并熟练掌握这些技术,能够帮助你编写出高效、稳定的多线程下载程序。

    POSIX多线程程序设计

    因此,线程安全是编写多线程程序时需特别注意的,保证同一时间只有一个线程能访问共享资源。 4. 数据竞争:当多个线程同时读写同一数据时,如果没有适当的同步机制,就可能产生数据竞争,导致数据的不确定性。解决...

    多线程应用程序设计 报告

    #### 一、多线程程序设计基本原理 多线程编程是一种软件技术,允许在单个程序中并行执行多个任务或操作,从而提高程序的性能和响应能力。在多核处理器普及的今天,多线程编程成为提升程序效率的关键手段之一。其...

    编写简单的HTTP 1.0客户端/服务器程序:.编写多线程Web服务器:编写简单的RMI程序

    本实验旨在通过编写简单的HTTP 1.0客户端/服务器程序、多线程Web服务器以及RMI程序,帮助你深入理解这些关键技术。 首先,我们来看HTTP 1.0客户端/服务器程序。HTTP是超文本传输协议,它是互联网上应用最为广泛的一...

    多线程实验报告.docx

    实验的目的是通过创建一个多线程程序,让学生理解和掌握Java中线程的生命周期及线程间的协作。实验内容分为两大部分:计算线程和读取线程。 计算线程的实现目标是进行阶乘和的运算,即计算1!到30!的和。为了增加...

    《Win32多线程程序设计》配套代码

    通过深入研究《Win32多线程程序设计》的配套代码,你可以逐步掌握多线程编程的核心技术,从而编写出高效、稳定的多线程应用,无论是进行后台任务处理、用户界面响应还是高并发网络服务,都能游刃有余。

    多线程示例程序(vs2005)

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高...通过VS2005的多线程示例,我们可以学习到如何在Windows环境中高效地编写多线程程序,以及如何解决并发编程中遇到的各种挑战。

    POSIX多线程程序设计中文版+源码

    POSIX(Portable Operating System Interface)是一组标准,旨在定义操作系统接口,使得...学习和理解这些概念,并结合实际代码示例,可以帮助开发者在POSIX环境中高效地编写多线程程序,解决并发问题,提高程序性能。

    易语言多线程多次启动一个子程序源码

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在需要高效利用系统资源...通过熟练掌握这些知识点,你就能在易语言中编写出高效的多线程程序,实现多个实例的子程序并发执行,从而提升程序的性能和用户体验。

    采用CSocket和多线程编写的文件传输程序

    在本文中,我们将深入探讨如何使用`CSocket`和多线程技术来构建一个文件传输程序,这个程序是在Visual Studio 2008环境下编译的。`CSocket`是MFC(Microsoft Foundation Classes)库中的一个类,它为Windows环境下的...

    外文文献-编写多线程的 Java 应用程序.doc

    在编写多线程程序时,必须确保一个线程不会干扰其他线程的工作。这个概念可以类比于一个办公室,其中的工作人员独立且并行地工作,除非他们需要使用共享资源或相互交流。一个工作人员只有在另一个工作人员“监听”...

    VC++简单的多线程聊天程序课程设计

    在项目实施过程中可能会遇到一些挑战,如多线程同步问题、网络延迟等问题。针对这些问题,可以通过优化线程管理策略、增加错误处理机制等方式进行改进。 #### 七、参考文献 - 《Windows程序设计》 - 《Visual C++...

    鱼刺多线程模块

    "鱼刺多线程模块"是一个专为提升程序运行效率而设计的开源组件,它主要聚焦于多线程技术的应用。在计算机科学中,多线程是并发执行多个任务或子任务的一种方法,使得程序能够更高效地利用系统资源,特别是在多核...

    POSIX多线程程序设计.pdf

    POSIX(Portable Operating System Interface)是一组标准,旨在确保不同...通过学习和实践POSIX多线程程序设计,开发者可以编写出高效、可靠的多线程应用程序,充分利用多核处理器的优势,提升软件性能和用户体验。

Global site tag (gtag.js) - Google Analytics