估计这些底层信息都得通过jni来实现

解决方案 »

  1.   

    Thread.currentThread().toString();或进程变量.getName();
      

  2.   

    To zhigangsun(流星):能否推荐一本介绍使用jni的书。To DF_4B(机车乘务员) :如果我希望我的程序能够监控其他的进程,您这样做能够实现吗?
      

  3.   

    一个简单的问题就要通过jni来实现,那java真师妹前途了.
    执行如下:
    Process p=Runtime.getRuntime().exec("tasklist");
    这样你获得了一个执行tasklist的进程句柄,你用这个进程句柄去执行你想要的操作吧.
    其中tasklist是在命令行下显示进程信息的命令.
      

  4.   

    to DF_4B(机车乘务员)
    老兄,你获的是现在正在执行的线程的信息,不是进程,线程和进程是有区别的.
      

  5.   

    to zhutouzip(吃青春饭不肖子!) :
    但是我还是无法得到该进程所分配的内存大小,能否再将明白一点?
      

  6.   

    import java.io.*;
    public class ThreadTest{
       public static void main(String args[])throws Exception{
       Process p=Runtime.getRuntime().exec("tasklist");
           System.out.println(p);
       
       BufferedReader bw=new BufferedReader(new InputStreamReader(p.getInputStream()));
       Thread.currentThread().sleep(10000);
       System.out.println(bw.readLine());
                System.out.println(bw.readLine());
       System.out.println(bw.readLine());
       System.out.println(bw.readLine());
       System.out.println(bw.readLine());
       System.out.println(bw.readLine());
       }
    }
    以上是我进行测试的代码,我没有顾及很多,只写了一部分作为测试之用.我能够获得进程的详细列表,你执行时可能遇到一下问题,如果有问题可以给我留言:
    (1)自己处理异常. Thread.currentThread().sleep(10000);这一句的作用是:让当前线程处在睡眠状态10秒,等待由Process p=Runtime.getRuntime().exec("tasklist");
    产生的子进程执行完毕,如果运行出现IlegalstateException的话,将睡眠的值调整一下.
    (2)你不要将System.out.println(bw.readLine());这一行只写一句,因为输出的第一行可能是空的,你可以写一个循环获得所有的进程信息,即将System.out.println(bw.readLine());这一行放置在一个循环里面.
    以上是两个主要的问题,如果有什么其它的问题,可以告诉我,我们一起探讨.
      

  7.   

    谢谢zhutouzip(吃青春饭不肖子!) 这么细心认真的答复。