`

项目开发中碰到的一个线程问题(一)

阅读更多
   今天上午更新数据的时候,发现获取的数据和实际数据源有很大的差别。这里简单描述下项目背景:做的android项目,需要从web服务器上定时获取a,b,c,d,e....的每天的实时数据,然后在Android端做些处理进行UI显示,这里因为种类比较多,而且考虑到时效性,采用了异步线程池
Executors.newFixedThreadPool(10)

   在定位中通过对数据的比对,在服务端a,b,c,d,e有重复的相同日期的请求,个人觉得是不是客户端发起Http请求是不是参数混了,然后查看Http调用代码,发现HttpClient对象是全局对象,在每个独立的线程对HttpClient的调用
executorService.submit(new Runnable()
		{
			@Override
			public void run()
			{
				myHttp.sendGet(type,date);
			}
		});

这里可理解为HttpClient对象在多线程的环境下是线程非安全的,在该对象调用中可能会出现参数及返回值数据的异常。
   没有实际代码,说得有些乱哈。等明天好好整理下代码,再详细讲下。
2
7
分享到:
评论
4 楼 alanlg 2012-10-16  
wangzhangxing 写道
PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
cm.setMaxTotal(100);
然后new DefaultHttpClient(cm));
这样出来的client就是线程安全的了

代码也是这么写的,是由于我把HttpClient的变量范围搞错了。
还是要谢谢的你的建议
3 楼 小树鹿鸣 2012-10-12  
    <bean id="crawlHttpClient" class="com.funo.crawl.util.ClientMultiThreadedExecution" destroy-method="destroy">
    <property name="connectionTimeout" value="30000" />
    <property name="readTimeout" value="30000" />
    <property name="threadMaxTotal" value="100" /><!-- 最大线程数 -->
    <property name="maxPerRoute" value="400" /><!-- 每个路由最大连接数 -->
    <property name="requestSentRetryEnabled" value="true" />
    <property name="retryCount" value="0" /><!-- 失败重复次数 -->
    </bean>
2 楼 wangzhangxing 2012-10-12  
PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
cm.setMaxTotal(100);
然后new DefaultHttpClient(cm));
这样出来的client就是线程安全的了
1 楼 endual 2012-10-11  
并发包下的类吧,没这样的实战

相关推荐

    项目开发中碰到的一个线程问题 (二)

    在标题提到的“项目开发中碰到的一个线程问题(二)”中,很可能是指在多线程环境下,由于对共享资源的不恰当访问,导致了程序的不稳定或错误。解决这类问题的关键在于正确理解和应用同步机制,如synchronized关键字...

    TCP-接收线程和发送线程

    在这个项目中,“TCP-接收线程和发送线程”是一个C/C++实现的多线程编程示例,旨在展示如何在服务器端和客户端之间有效地管理数据的接收和发送。以下将详细介绍相关的知识点。 首先,我们要理解TCP的基本原理。TCP...

    基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打

    基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打印,最后可参考资料偏少,由于项目紧急且对NodeJS的熟悉程度目前也还不够,所以转而...

    文件打印问题 (c++多线程实现)

    在“文件打印问题”中,可能会遇到的一个关键问题是资源竞争。当多个线程尝试同时访问和修改同一个文件时,如果没有适当的同步机制,结果可能会是数据不一致或错误。为了解决这个问题,C++提供了如互斥量(mutex)、...

    多线程串口通讯实例,基于VC++开发

    在这个实例中,你将找到一个已经实现的多线程串口通信程序。打开项目后,你可以看到源代码,其中可能包含了如何初始化串口、设置参数、读写数据以及处理多线程同步的示例。注释部分会帮助理解各个函数和结构的作用,...

    多线程下载器.zip易语言项目例子源码下载

    本文将深入剖析一个基于易语言实现的多线程下载器项目,旨在帮助个人学习者、学生以及小团队开发者理解并掌握这一技术。 首先,我们要明确什么是多线程下载。传统的单线程下载方式中,数据是顺序地从服务器读取到...

    一个基于java的多线程爬虫项目.zip

    在IT领域,尤其是在Web开发和数据获取中,爬虫项目是一个重要的组成部分。本项目是一个基于Java的多线程爬虫实现,它展示了如何利用Java语言高效地抓取互联网上的信息。下面将详细介绍这个项目的相关知识点。 1. **...

    线程操作,可多线程

    5. **错误处理**:线程操作中难免会遇到错误,如创建失败、同步问题等,自定义线程类应有适当的错误处理机制。 6. **状态管理**:线程的运行状态(如是否正在运行、是否已结束等)也需要被管理,以便在代码中正确地...

    测试一-四线程实验报告.doc

    标题中的“测试一-四线程实验报告.doc”是一个关于多线程编程和消息队列交互的实践项目,描述中详细介绍了实验的目的和实现方式。这个实验的核心是使用四个线程(A、B、C、D)和一个消息队列来实现线程间的数据通信...

    鱼刺多线程模块

    总的来说,"鱼刺多线程模块"为开发者提供了一个强大的工具,使他们能够在软件开发中充分利用多核处理器的优势,提升程序性能。通过理解和掌握这个模块,开发者可以创建更加高效、响应迅速的应用程序,同时也能深入...

    C++名家对话(项目中常见问题解决方案)

    "C++名家对话(项目中常见问题解决方案)"这一主题,聚焦于C++在实际项目中的应用,探讨了设计模式、惯用法以及如何解决遇到的问题。下面我们将深入探讨这些关键知识点。 首先,设计模式是软件工程中的通用解决方案...

    在列表控件中采用多线程技术插入进度条

    在开发Windows应用程序时,我们经常会遇到需要处理大量数据并实时更新UI的情况,比如在一个列表控件(ListCtrl)中显示大量的信息。在这个过程中,如果在主线程中进行操作,可能会导致界面卡顿,用户体验下降。为了...

    Iphone下多线程的开发

    ### IPhone下多线程的开发 随着移动设备性能的不断提升以及用户对应用程序功能和响应速度的要求越来越高,多线程编程已经成为iOS应用开发中的一个重要组成部分...希望本文对你在实际项目中遇到的多线程问题有所帮助。

    多线程雷电游戏

    10. **源码分析**:博客中提供的源码可能是分析的重点,通过阅读和学习,读者可以了解到实际项目中如何设计和实现一个多线程游戏。 综上所述,"多线程雷电游戏"涉及了软件工程、操作系统、编程语言、游戏开发等多个...

    WIN10_VS2019_配置_多线程_C语言.docx

    这里主要介绍如何配置VS2019以便支持C语言的多线程功能,以及解决在配置过程中可能遇到的问题。 首先,我们需要明白,多线程在C语言中通常是通过POSIX线程库(pthread)来实现的,但在Windows系统上,原生的API是...

    Indy多线程程序客户端演示程序

    Indy(Internet Direct)是Delphi和C++Builder开发网络应用程序的一个强大库,它提供了丰富的组件集合,用于实现各种网络协议,如TCP/IP、HTTP、SMTP、FTP等。本示例程序“Indy多线程程序客户端演示程序”旨在演示...

    Java案例开发_项目开发风暴(含源代码)

    通过"Java案例开发_项目开发风暴"中的实战项目,你可以将上述知识点逐一实践,从而深入理解并掌握Java项目开发的全过程。每个项目都可能涉及上述部分或全部知识点,通过不断地练习和调试,你的编程技能和问题解决...

    C#开发的基于Socket的多线程服务器端短信转发程序

    本项目是一个基于C#的多线程服务器端短信转发程序,它利用Socket技术实现高效的信息处理和并发能力,适合大规模并发场景。下面将详细阐述这个程序的核心知识点。 1. **C#编程基础**:C#是微软推出的面向对象的编程...

    易语言将程序转换到线程中执行

    1. **创建线程**:使用“创建线程”命令创建一个新的执行线程,该命令需要一个函数指针作为参数,这个函数将在新线程中执行。例如: ```易语言 .线程句柄 = 创建线程(我的线程函数) ``` 其中,`我的线程函数`是...

    易语言超线程下载源码.zip易语言项目例子源码下载

    对于个人学习者、学生毕业设计或小团队项目来说,这个易语言超线程下载源码是一个很好的实践案例,可以学习到如何结合易语言的特性,实现高效的多线程网络下载,同时还能涉及到线程同步、错误处理、资源管理等多个...

Global site tag (gtag.js) - Google Analytics