- 浏览: 52463 次
- 性别:
- 来自: 北京
文章分类
最新评论
最近做了一个项目使用多线程非常频繁,总结一下使用遇到的问题和解决办法
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 564spring.jar 是包含有完整 ... -
JUnit Assert方法总结
2015-12-07 11:48 681junit中的assert方法全部放在Assert类中 ... -
windows中zookeeper的配置
2015-10-19 16:12 8351:首先下载一个zookeeper,我下载的版本是zooke ... -
StringUtils的常用方法
2015-09-17 17:02 7551.取得字符串的缩写 使用函数: StringUtils.ab ... -
详细设计
2015-04-21 14:33 532详细设计 OA协同办公系统,详细设计说明书 h ... -
多线程同步
2015-03-12 11:24 308在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就 ... -
没有安装jdk的系统中执行jar
2014-06-19 13:51 1081一、精简jre 制作了一个SWING程序,为用户方便,需 ... -
河南交通运输厅OA办公自动化项目总结
2014-05-09 09:24 0一、new很多spring容器 二、线程创建没有放在线程 ... -
Office转pdf
2014-04-29 09:11 1108一、使用Jodconverter 利用OpenOffice ... -
jdbc使用总结
2014-04-07 16:22 442JDBC连接数据库 •创建一个以JDBC连接数据库 ... -
log4j的使用
2014-03-10 16:03 407第一步:加入log4j-1.2.8.jar到lib下。第二 ... -
spring整合hibernate
2014-03-10 15:56 397原文转自:http://wanqiufeng.blog.51 ... -
webservice中的session的管理
2014-03-07 12:54 541Session.java代码如下: ... -
unicode编码的转化
2013-08-12 18:52 652/** * 把中文转成Unicode码 * @param ... -
java学习视频
2013-07-16 12:58 362http://edu.csdn.net/java/video ... -
读取Jar包内的资源
2013-04-26 11:21 901在项目中使用Maven,有大量的jar包。 原来代码中 直接 ... -
JVM参数说明
2013-04-13 10:27 737JVM配置参数中文说明: --------------- ... -
线程池ExecuteService使用总结一
2013-04-11 16:02 2646三个区别: 1、接收的参数不一样 2、submit有返回 ... -
https开发应用
2013-04-10 11:53 638SSL, 或者Secure Socket Laye ...
相关推荐
多线程编程学习的心得体会,仅供参考,如有偏差出,还请不吝赐教。
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
多线程 , java,多线程并发,对于多线程的原理以及使用做了初步的介绍
这是一个C#写的打字游戏,多线程使用教学,小例字源码,在游戏中体验多线程的真髓!
《Linux多线程服务端编程:使用muduo C++网络库》这本书自今年一月上市以来,半年之内已经重印两次(加上首印,一共是三次印刷),总印数达到了9000册,这在技术书里已经算是相当不错的成绩。 作者说:以下谈一谈这...
多线程绑定控件的封装,避免绑定过程中出现窗体假死的现象,可以在一定程度上提高用户体验
使用多线程技术实现文件的下载,断点续传等功能,内置demo.apk,可以直接安装进行体验
DELPHI 真正的多线程代码! 一个很棒的线程库,解决了很多的delphi自带的线程的问题,真正体验到什么叫做多线程
利用多线程来提高UI界面中的用户体:包括源码和UML文档
很多人都有过使用网络蚂蚁或网络快车软件下载互联网文件的...下面我就讲一讲如何利用C#语言编写一个支持多线程下载文件的程序,你会看到利用C#语言编写网络应程序是多么的容易,从中也能体会到C#语言中强大的网络功能
这是本人在学习Java 多线程时的总结归纳以及代码,希望对下载的同学有帮助!
为了给用户提供更好的体验,读取数据库等程序需要长时间来执行的操作,需要弹出一个等待界面。可以一边执行需要等待的操作,一边...本资源使用VS2017软件,VB.NET编程,异步委托和多线程编程实现背景透明的等待窗体。
内含 chapter02-chapter18 共 17 个实例性源码项目,内容循序渐进,由入门到精通。尤其适合于没有 Java 线程开发经验的朋友。自己动手敲出本资源解压缩后的 ...相信你理解了此源码之后,即可步入 Java 多线程开发。
Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。 在Google刚推出Flutter时,其发展很缓慢,终于在18年发布第一个Bate版之后迎来了爆发...
手机号开通检测极速多线程版是一款非常实用的手机帐号检测辅助软件,通过这款手机号开通检测极速多线程版,就能帮助用户快速检测手机号是否注册其他应用,操作简单,快来下载体验吧! 使用说明 1、注册若快或UU账号...
我们之所以使用多线程编程,一般目的不外乎下面两个:1、避免程序界面假死带来的恶劣用户体验2、充分利用现代计算机的处理资源,来加快业务的处理速度。当然,您可能有更好更多的理由来做多线程编程,但上面的这两个...
使用boost库做服务器端,多线程通信;VC++配置好BOOST,程序可以正常跑,例子来源网上,主要在于BOOST学习体验
利用C#语言编写一个支持多线程下载文件的程序,你会看到利用C#语言编写网络应程序是多么的容易,从中也能体会到C#语言中强大的网络功能
关于多线程的总结和多线程的心得体会。讲诉关于多线程的理论
可以使用Java中的同步机制,如使用synchronized关键字或者使用线程安全的集合类来保证多线程操作的安全性。 实现步骤: 创建一个下载管理器类,用于管理下载任务和线程池。 在下载管理器中实现多线程下载的逻辑,...