- 浏览: 55225 次
- 性别:
- 来自: 北京
文章分类
最新评论
最近做了一个项目使用多线程非常频繁,总结一下使用遇到的问题和解决办法
1、当然是线程要用线程池管理,这样会使资源分配合理,比如我在项目中用多线程读取文件,a、有可能使有些文件已经读取快结束了,而有些文件还没开始读取;b、批量处理文件时,如果没有使用线程池,就可能使cpu使用率为100%,机器基本什么都不能干了,而且执行效率并不一定比线程管理下的线程执行效率高。
2、多线程使用的资源尽量不使用公共资源,可以用局部变量代替,公共资源很容易引起死锁或者,管理不当使得结果错误,局部变量就不会有这种情况,当内存不够用时,Java内存管理器会把无用的内存释放,所以我们不用担心创建对象过多,当然,如果必须用为公用资源的话,也要公用资源。
3、Timer定时管理器和ScheduledFutured线程池的区别
a、Timer是单线程执行,任务时串行执行,ScheduledFutured是多线程执行任务;
b、Timer可以通过task.canel()方法取消任务,ScheduledFutured需要通过获取线程执行的结果ScheduledFuture<?>类来取消任务执行;
c、Timer执行任务超时,下次执行任务会把时间赶回来,就是执行时间不会有偏差,但是ScheduledFutured执行任务如果有上次任务没有执行完,下次就会推迟执行,以至于以后每个周期都会向后推迟。
4、多线程中执行关于时间的处理,
a、如果使用Timer的话,最好在刚执行的时候就记录下时间,如果调用其他函数,则把时间传进去,这样时间比较精确不会有偏差;
b、如果使用ScheduledFutured执行周期任务的话,最后把周期的时间先生成,任务类依次读取,否则很可能造成时间差;
c、总之,如果时间最好不要在用的时候才去获取,要先获取时间传给需要使用的方法;
发表评论
-
ubuntu的数据库主从复制
2015-12-30 08:58 0详情见附件 -
spring JAR包详解
2015-12-11 11:32 594spring.jar 是包含有完整 ... -
JUnit Assert方法总结
2015-12-07 11:48 710junit中的assert方法全部放在Assert类中 ... -
windows中zookeeper的配置
2015-10-19 16:12 8861:首先下载一个zookeeper,我下载的版本是zooke ... -
StringUtils的常用方法
2015-09-17 17:02 8131.取得字符串的缩写 使用函数: StringUtils.ab ... -
详细设计
2015-04-21 14:33 561详细设计 OA协同办公系统,详细设计说明书 h ... -
多线程同步
2015-03-12 11:24 337在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就 ... -
没有安装jdk的系统中执行jar
2014-06-19 13:51 1165一、精简jre 制作了一个SWING程序,为用户方便,需 ... -
河南交通运输厅OA办公自动化项目总结
2014-05-09 09:24 0一、new很多spring容器 二、线程创建没有放在线程 ... -
Office转pdf
2014-04-29 09:11 1147一、使用Jodconverter 利用OpenOffice ... -
jdbc使用总结
2014-04-07 16:22 472JDBC连接数据库 •创建一个以JDBC连接数据库 ... -
log4j的使用
2014-03-10 16:03 440第一步:加入log4j-1.2.8.jar到lib下。第二 ... -
spring整合hibernate
2014-03-10 15:56 428原文转自:http://wanqiufeng.blog.51 ... -
webservice中的session的管理
2014-03-07 12:54 576Session.java代码如下: ... -
unicode编码的转化
2013-08-12 18:52 693/** * 把中文转成Unicode码 * @param ... -
java学习视频
2013-07-16 12:58 404http://edu.csdn.net/java/video ... -
读取Jar包内的资源
2013-04-26 11:21 955在项目中使用Maven,有大量的jar包。 原来代码中 直接 ... -
JVM参数说明
2013-04-13 10:27 767JVM配置参数中文说明: --------------- ... -
线程池ExecuteService使用总结一
2013-04-11 16:02 2722三个区别: 1、接收的参数不一样 2、submit有返回 ... -
https开发应用
2013-04-10 11:53 668SSL, 或者Secure Socket Laye ...
相关推荐
自.NET 4.0引入`Task`类后,推荐使用异步编程模型(如`async/await`关键字)来替代多线程,因为它可以更好地管理CPU和I/O操作,提供更好的用户体验。 7. **线程通信** `WaitHandle`类(如`AutoResetEvent`, `...
在现代软件开发中,多线程已经成为提升程序性能、改善用户体验的重要手段。这个压缩包包含六个C#.NET多线程的实例,涵盖了多线程的基本使用以及互斥等高级特性。以下是这些实例可能涉及的知识点详解: 1. **线程...
通过分析并实践`threadTest`案例,我们可以深入理解Java多线程的原理和使用技巧,为编写高效并发程序打下坚实基础。同时,也要注意多线程编程中的死锁、活锁和饥饿等问题,合理设计线程间的交互,避免出现不可预期的...
在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键...深入理解和掌握多线程的使用,对于提升自动化水平和工作效率至关重要。
"多线程使用进度条"是一个常见的需求,它允许程序在后台处理任务的同时,通过进度条向用户显示任务的完成进度,提升用户体验。这个压缩包文件"多线程使用进度条.zip"很可能包含了使用VC++(Visual C++)编写的源代码...
FFmpeg是一款开源的多媒体处理工具,它包含了各种编解码...在分析和使用提供的压缩包文件"ffmpegH264Opt"时,开发者可以深入研究源代码,理解并学习如何在FFmpeg中实现多线程和硬件优化,以优化自己的多媒体应用程序。
多线程允许一个应用程序同时执行多个不同的任务,这在处理大量数据、实现并发操作或者优化用户体验时尤其有用。 "鱼刺框架"的稳定特性意味着它在设计时考虑了线程安全性和资源管理,确保在多线程环境下不会出现竞态...
- 特别是对于大型文件系统,多线程搜索能够提高用户体验,因为用户可以在搜索过程中继续执行其他任务。 4. **实现多线程文件搜索** - 每个线程需要一个独立的任务,例如搜索特定路径下的文件。 - 使用`...
在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的...正确理解和使用多线程能够提升应用程序的性能和用户体验。
尤其在易语言这样的高级编程环境中,多线程框架的使用能够使开发者更加高效地管理并行任务。本文将基于“多线程框架通用多线程源码.zip”这个压缩包,深入探讨易语言版的多线程通用框架,并分析其核心功能和应用。 ...
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。...在实际开发中,正确地应用多线程机制可以显著提升程序的性能和用户体验。
本文件"两种多线程使用方式演示.rar"将展示如何在易语言中创建和管理多线程。 首先,我们要了解多线程的两种基本实现方式: 1. **线程对象创建**:这是最常见的方式,程序员通过调用易语言提供的线程创建函数(如...
除了传统的多线程,Delphi还支持异步编程模型,如使用IO Completion Ports(IOCP)来处理I/O密集型任务,提高系统吞吐量。IOCP允许系统在I/O操作完成时自动通知线程,避免了不必要的等待和上下文切换。 七、实际...
通过学习以上知识点,并结合提供的“多线程访问网页源码”,开发者可以理解并掌握如何在易语言环境下编写多线程网络应用,提高程序的并发性能,提升用户体验。实践过程中,不断调试和优化代码,将有助于深化对易语言...
多线程编程需考虑性能优化,包括减少上下文切换、合理分配工作负载、使用合适的同步机制等。调试多线程程序通常较复杂,gdb等调试器提供了线程查看和控制功能,帮助开发者定位问题。 总结,Linux系统的多线程编程为...
通过多线程,可以实现任务的并发执行,比如在用户界面更新的同时,后台进行数据处理,提升用户体验。 二、VB6实现多线程 在VB6中,创建多线程主要依靠ActiveX EXE组件。这个组件允许我们创建一个独立的线程来运行...
在软件开发中,多线程技术对于提高程序的执行效率及用户体验具有重要作用。Visual Basic 6.0 (以下简称VB6)作为一种广泛使用的编程语言,支持通过多种方式创建多线程应用程序。本文将详细介绍如何在VB6中实现多线程...
本示例"C++在多线程中使用mciSendString播放音乐demoB"着重于如何在多线程环境下利用Windows Multimedia Control Interface (MCI) 函数mciSendString来实现音乐播放。下面我们将深入探讨这两个关键概念。 首先,多...
在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代...通过学习和实践这些实例,开发者能够深入理解多线程编程的关键概念和技术,从而在实际项目中更好地应用多线程,提升程序性能和用户体验。