android 打印线程信息

来源:互联网 发布:知乎周刊pdf 编辑:程序博客网 时间:2024/06/01 08:12

今天,讲讲如何打印线程的id。


用语句:

   Android.os.Process
    //获取当前进程的方法
    android.os.Process.getElapsedCpuTime():获取消耗的时间。
android.os.Process.myPid():获取该进程的ID。
android.os.Process.myTid():获取该线程的ID。
android.os.Process.myUid():获取该进程的用户ID。
    android.os.Process.supportsProcesses:判断该进程是否支持多进程。
     
    // 获取/设置线程优先级
    getThreadPriority(int tid):获取指定ID的线程的优先级。
    setThreadPriority(int priority):设置当前线程的优先级。
    setThreadPriority(int tid,int priority):设置指定ID的线程的优先级。
    
    //管理进程
    killProcess(int pid):杀死指定的进程。
    sendSignal(int pid,int singal):向指定的进程发送信号。
    
    android.os.Environment
    //获取系统环境变量
    getDataDirectory():获取当前系统中数据文件夹环境变量。
    getDownloadCacheDirectory():获取当前系统中下载缓存文件环境变量。
    getExternalStorageDirectory():获取当前系统中外部存储文件环境变量。
    getRootDirectory():获取当前系统中根文件环境变量。

---------------------------------------

实例:viewrootImp.Java中的构造函数,打印进程和线程id

public ViewRootImpl(Context context, Display display) {        mContext = context;        mWindowSession = WindowManagerGlobal.getWindowSession();        mDisplay = display;        mBasePackageName = context.getBasePackageName();        mDisplayAdjustments = display.getDisplayAdjustments();        mThread = Thread.currentThread();        Log.d("stl","ViewRootImpl "+android.os.Process.myPid()+" Thread: "+android.os.Process.myTid()+" name "+Thread.currentThread().getName());

输出:

01-08 13:22:23.509  2373  2373 D stl     : ViewRootImpl 2373 Thread: 2373 01-08 13:22:25.929  4027  4027 D stl     : ViewRootImpl 4027 Thread: 4027 01-08 13:22:26.979  4168  4168 D stl     : ViewRootImpl 4168 Thread: 416801-08 13:22:27.949  3825  3825 D stl     : ViewRootImpl 3825 Thread: 3825 01-08 13:22:28.069  3825  3825 D stl     : ViewRootImpl 3825 Thread: 3825 

前面一个号是进程id,后面一个号是线程id。



另外,可以使用getThreadId() 方法一个正在运行线程的ID。

public class Main extends Object implements Runnable {  private ThreadID var;  public Main(ThreadID v) {    this.var = v;  }  public void run() {    try {      print("var getThreadID =" + var.getThreadID());      Thread.sleep(2000);      print("var getThreadID =" + var.getThreadID());    } catch (InterruptedException x) {    }  }  private static void print(String msg) {    String name = Thread.currentThread().getName();    System.out.println(name + ": " + msg);  }  public static void main(String[] args) {    ThreadID tid = new ThreadID();    Main shared = new Main(tid);    try {      Thread threadA = new Thread(shared, "threadA");      threadA.start();      Thread.sleep(500);      Thread threadB = new Thread(shared, "threadB");      threadB.start();      Thread.sleep(500);      Thread threadC = new Thread(shared, "threadC");      threadC.start();    } catch (InterruptedException x) {    }  }}class ThreadID extends ThreadLocal {  private int nextID;  public ThreadID() {    nextID = 10001;  }  private synchronized Integer getNewID() {    Integer id = new Integer(nextID);    nextID++;    return id;  }  protected Object initialValue() {    print("in initialValue()");    return getNewID();  }  public int getThreadID() {    Integer id = (Integer) get();    return id.intValue();  }  private static void print(String msg) {    String name = Thread.currentThread().getName();    System.out.println(name + ": " + msg);  }}

结果

上面的代码示例将产生以下结果。

threadA: in initialValue()threadA: var getThreadID =10001threadB: in initialValue()threadB: var getThreadID =10002threadC: in initialValue()threadC: var getThreadID =10003threadA: var getThreadID =10001threadB: var getThreadID =10002threadC: var getThreadID =10003


android 打印线程信息就讲完了。


就这么简单。