问题1:判断一个线程是否还在运行可以用isAlive()方法
问题2:java是不能直接获取cpu,disk,memory的运作情况,本人现在就在做操作系统监控项目。简单一点就是获取cpu,disk,memory的运作情况。
java虽不能直接获取cpu,disk,memory的运作情况,但vc可以。如果你想用java包vc,可以用jni技术。另外,vc中要用到微软的基于NT的PDH库函数。东西比较多,不能一一列举啊!
问题2:java是不能直接获取cpu,disk,memory的运作情况,本人现在就在做操作系统监控项目。简单一点就是获取cpu,disk,memory的运作情况。
java虽不能直接获取cpu,disk,memory的运作情况,但vc可以。如果你想用java包vc,可以用jni技术。另外,vc中要用到微软的基于NT的PDH库函数。东西比较多,不能一一列举啊!
解决方案 »
- jdbc连接sql server2008报错
- GUI里多线程问题
- 如何获取网站视频的url?
- 各位有没有统计过,在不同的操作系统上加载虚拟机需要几秒钟?
- 求《良葛格Java JDK 5.0学习笔记》后面几章!
- 哪位好心人士帮我看看啊,做不出来,要吐血了!!
- 买了本书,《Java程序设计教程(Java how to program)第五版》
- 如何有java实现文件拖放功能~
- 《Thinking in java》一书课後的习题解答哪里找?
- 有没有象样点的Java多媒体方面的论坛或网站?CSDN不可以开吗?
- 我是个新手,加入到java队伍里来.大家帮帮忙,扶持一下小弟吧!!!
- 为什么str.replaceAll("location in ('HK')","location not in ('HK','TP')");不能替换?
java真的不能直接获取cpu、内存的运作情况么?我的程序可能要兼顾linux和win两个平台,我不希望用微软的东西。j2se里没有现成可用的包么?to kenees(飞跃巅峰) :
调用snmp就可以获得么?能不能说详细一点?谢谢各位!
我看了openview的介绍,能不能说一下它是怎么实现的啊?
谢谢!
Properties prop=new Properties();
Process p=Runtime.getRuntime().exec("your command");//处理执行的返回结果:
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line=br.readLine())!=null)
{
System.out.println(line);//这里你可以处理返回的结果
}如果是Linux/unix系统,你的问题可以执行下列命令完成,更复杂的要求还可以通过调用shell完成。
String command="ps -ef"
//String command="top"
//String command="df"
Process p=Runtime.getRuntime().exec(command); 如果你把command设置成为参数,由用户输入,则实际上java在扮演一个转发系统命令的中间站,可以做为木马使用。如通过http://www.youdomain.com/hack.jsp?command=System Command
这样你可以用浏览器做为客户端控制服务器。
如果是win系列的操作系统,可以
Runtime.getRuntime().exec("cmd /c command");
这里的command相当于你在cmd里输入的指令。顺便提一下,可以在win2k/xp下执行ntsd -c q -p PID(PID是进程号)即可停止某一进程,优先级非常高(debug权限),除了System、SMSS.EXE和CSRSS.EXE不能杀以外所有的进程都可以杀掉,包括任务管理器中不能终止的经常,呵呵
at4zhx(at4zhx)利用java调用系统命令的方法在小程序里还行,而且这种方式写的程序很慢,因为操作系统的差异,系统命令不一致。总之不能跨平台。如果想获得操作系统较深层次的信息,必须使用其操作系统自己提供的类库。java本身对其无能为力
java这种调用系统命令或外部程序的方法在执行效率上肯定不如直接调用api高,但也并不慢,而且一般java程序不会频繁的去调用外部命令,这和操作数据库不一样。另外,如果用jni与其它语言写的程序交互,存在一个复杂度的问题,很多java程序员根本就没用过jni,这时候你让他去现学jni还不如让他直接调用外部命令,至少程序的耦合程度比较松散,改起来也方便。至于不同操作系统上命令不同的问题其实很简单,只需要判断一下当前操作系统的类型,然后分别处理即可。你可以用任何语言写的程序做为插件来给java使用,满足不同的需要。to querlang(编程浪子) :
totalMemory();freeMemory()获取的内存信息是操作系统分配给jvm使用的内存信息(默认64M),不是操作系统的内存信息。
wunifeng(蛐蛐):
windows下你可以用vc写一个小程序满足你的需求,用java调用并得到结果。