while(true)一个java进程能跑多长时间?

问题描述

有个任务就是每隔10秒钟读取某个表的数据,然后再拆分读取的数据插入到别的表中。之前我使用了Timer每个十秒执行一次任务,但是后来莫名其妙的就无法初始化任务类,然后我干脆用了一个死循环while(true){Aa=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);//线程睡眠}上周末我跑了两天没什么问题,请问大侠们,觉得这么个写法有问题吗?

解决方案

解决方案二:
基本上沒問題,只要要注意一下Aa=newA();如果資源沒釋放完全,記憶體用量會越來越大。還有最好有可以離開迴圈的條件,方便當作開關。
解决方案三:
不会内存溢出吗
解决方案四:
引用1楼kebin0001的回复:

基本上沒問題,只要要注意一下Aa=newA();如果資源沒釋放完全,記憶體用量會越來越大。還有最好有可以離開迴圈的條件,方便當作開關。

应该是该关闭的都关闭了,因为毕竟也跑了两天了。我担心java本身就这么一直跑着不知道行不行。
解决方案五:
引用楼主liujunshi603的回复:

有个任务就是每隔10秒钟读取某个表的数据,然后再拆分读取的数据插入到别的表中。之前我使用了Timer每个十秒执行一次任务,但是后来莫名其妙的就无法初始化任务类,然后我干脆用了一个死循环while(true){Aa=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);//线程睡眠}……

booleanfiag=true;while(true){if(){}Aa=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);//线程睡眠}
解决方案六:
booleanfiag=true;while(true){if(!flag){break;}Aa=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);//线程睡眠}然后找个地方改变flag?
解决方案七:
该回复于2010-10-21 09:58:40被版主删除
解决方案八:
引用6楼sugarhappy的回复:

有意义吗?

当然有意义,你比方说发通知消息之类,你必须有个守护线程去监视数据的变化,然后处理。
解决方案:
引用3楼liujunshi603的回复:

引用1楼kebin0001的回复:基本上沒問題,只要要注意一下Aa=newA();如果資源沒釋放完全,記憶體用量會越來越大。還有最好有可以離開迴圈的條件,方便當作開關。应该是该关闭的都关闭了,因为毕竟也跑了两天了。我担心java本身就这么一直跑着不知道行不行。

应该问题不大,前提是处理程序不要有bug。
解决方案:
哈哈,楼主太可爱了,竟然跑了两天,呵呵。如果任务每10秒执行一次用不着使用这么消耗系统资源的方式,楼主可以去看一下:java.util.concurrent.ScheduledExecutorService这个接口
解决方案:
这些写没问题,原始的健壮。a.doing最好再trycatch一下。
解决方案:
该回复于2010-10-21 09:56:48被版主删除
解决方案:
没有问题的,只要不出现异常线程会一直跑下去。不过最好设个标志,像4楼说的,不过最好是:booleanflag=....;while(flag){}这样就可以控制什么事侯去停掉线程。
解决方案:
引用12楼boyone2009的回复:

没有问题的,只要不出现异常线程会一直跑下去。不过最好设个标志,像4楼说的,不过最好是:booleanflag=....;while(flag){}这样就可以控制什么事侯去停掉线程。

这种方法要好一些,想停的时候flag=false就行了
解决方案:
可以考虑下果大的那个接口。另外我很好奇为什么用Timer会死。
解决方案:
还是用timer吧死循环肯定是不推荐使用的,Java设计timer出来就是做定时器用的。
解决方案:
跑了两天!!
解决方案:
Aa;while(true){a=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);//线程睡眠}按照楼主的方式这样会不会好一点呢?把声明放在外面就不用每次都去声明了。
解决方案:
能用定时器吗?
解决方案:
内存资源耗尽了吧
解决方案:
引用4楼liujunshi603的回复:

引用楼主liujunshi603的回复:有个任务就是每隔10秒钟读取某个表的数据,然后再拆分读取的数据插入到别的表中。之前我使用了Timer每个十秒执行一次任务,但是后来莫名其妙的就无法初始化任务类,然后我干脆用了一个死循环while(true){Aa=newA();a.doing();//执行各种逻辑运算Thread.sleep(10000);……

有意义吗已经进了循环体还指望它能出来
解决方案:
好像还没有一个特别准确的定论。再等等
解决方案:
该回复于2010-10-22 09:35:04被版主删除
解决方案:
引用9楼bao110908的回复:

哈哈,楼主太可爱了,竟然跑了两天,呵呵。如果任务每10秒执行一次用不着使用这么消耗系统资源的方式,楼主可以去看一下:java.util.concurrent.ScheduledExecutorService这个接口

哈哈,我有一个需求就是用的这个,可以有任务队列哟。死循环不太好
解决方案:
引用16楼cl61917380的回复:

跑了两天!!

哈哈,换台更好点的机子试试看看能跑几天
解决方案:
引用12楼boyone2009的回复:

没有问题的,只要不出现异常线程会一直跑下去。不过最好设个标志,像4楼说的,不过最好是:booleanflag=....;while(flag){}这样就可以控制什么事侯去停掉线程。

直接这样的话最后内存溢出...

时间: 2024-08-31 05:42:35

while(true)一个java进程能跑多长时间?的相关文章

JVM源码分析之一个Java进程究竟能创建多少线程

概述 虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从JVM源码角度来分析,更多的来自于Linux Kernel的源码分析,今天要说的是JVM里比较常见的一个问题 这个问题可能有几种表述 一个Java进程到底能创建多少线程? 到底有哪些因素决定了能创建多少线程? java.lang.OutOfMemoryError: unable to create new native thread的异常究竟是怎么回事 不过我这里先声明下可能不能完全百分百将各种因素都理出来,因为毕竟我不是做Lin

hook-windows下如何把一个jar注入一个java进程

问题描述 windows下如何把一个jar注入一个java进程 如题, 其实我想hook一个java进程内的某一个类库. 想做到像windows下的dll注入到一个进程里并hook api一样的效果. 对java程序该如何做,谢谢

java rxtx包串口开发 长时间收发 (10分钟左右,100毫秒一次),数据出现较小错误

问题描述 java rxtx包串口开发 长时间收发 (10分钟左右,100毫秒一次),数据出现较小错误 我使用了RXTX包进行了JAVA串口开发,发现错误后我用JAVA是COM1 COM3对发,结果 得到的数据在10多分钟运行后就开始有不是很正确的发送 ,比如每行多一个不知道哪来的字符 或者多个换行符什么的 ...我是在WINDOWS XP系统下使用的 ...求大神帮助

Java服务端业务要跑较长时间,如何把运行过程中console的stdout实时反馈给前端?

问题描述 服务端要传文件,跑脚本,console打印的大量后台日志信息如何实时反馈给前端,让前端实现实时日志更新的效果? 解决方案 本帖最后由 pcs007 于 2014-08-18 21:07:14 编辑解决方案二:控制台的信息是你决定的,你可以把同样的信息实时交互给前端,后者更新解决方案三:这的就前端判断更新然后去拿信息啊解决方案四:在linux服务器上面,前端日志打印到file.log使用命令tail-ffile.log时时监控日志变化windows服务器的话,没有太关注解决方案五:你的前

JAVA进程占用高内存原因分析与优化方法

  首先看一下一个java进程的jmap输出:  代码如下   [lex@chou ~]$ jmap -heap 837 Attaching to process ID 837, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.10-b01 using thread-local object allocation. Parallel GC with 2 threa

查看java进程加载了哪些jar包。

问题描述 查看java进程加载了哪些jar包. 各位大神帮帮忙.如何查看一个java进程加载了哪些jarbao包?有没有比较好的工具. 解决方案 Java ClassLoader加载.jareclipse java EE无法加载java基础的jar包 解决方案二: 进程加载了哪些jar包?在项目里面应该可以直接看到了吧? 解决方案三: 这个不应该在进程里看吧?应该在项目中看的 解决方案四: 项目开发时都是放在web-lib目录下的,outline视图模式下可以很清楚的看到啊. 如果是maven项

浅析Java进程占用过高内存问题

首先看一下一个java进程的jmap输出:  代码如下 复制代码 [lex@chou ~]$ jmap -heap 837 Attaching to process ID 837, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.10-b01 using thread-local object allocation. Parallel GC with 2 thre

长时间的接触网站,突发奇想建立一个属于自己的网站

我是一个企业网站的站长,长时间的接触网站,突发奇想建立一个属于自己的网站,用于SEO技巧的测试.对于一个从来没有接触过编程的我,就开始了艰辛的历程. 域名注册对SEO复杂心情 首先选择域名,因为对域名的了解不是很多,在博客网站没有定位好的时候就选择了一个域名注册了,域名地址为,意思是我的妈妈一生一世幸福快乐的意思.然而域名注册之后,发现建一个关于妈妈的感情及相关信息的博客,资源有限,关键词定位不好定,最后又回到了与我一直朝夕相伴的企业网站上. 服务器空间的曲折路线 由于国内服务器需要备-案,大约

求助,windows下如何注入一个jar包到一个目标java进程

问题描述 我想做到像windows下注入一个dll到一个进程内然后hookapi的功能,jar注入java进程并hookjava类库能做到吗谢谢各位 解决方案 解决方案二:这个,貌似应该去分析下JVM的工作方式了解决方案三:可以做到,你去找一些JAVACLASS动态加载的文章即可.我们以前做过二次编译,即JAVA程序动态生成JAVA文件或加载JAVA代码编译后直接执行的东西,所有动态加载JAR包技术上完全是没问题的,只不过我这时间太久了,找不到例子,你去网上找找.......解决方案四:引用2楼