android 打印线程信息

释放双眼,带上耳机,听听看~!

今天,讲讲如何打印线程的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: 4168
01-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 =10001
threadB: in initialValue()
threadB: var getThreadID =10002
threadC: in initialValue()
threadC: var getThreadID =10003
threadA: var getThreadID =10001
threadB: var getThreadID =10002
threadC: var getThreadID =10003

 

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

 

就这么简单。

人已赞赏
Android文章

android Lint优化代码

2020-3-14 0:00:36

Android文章

Android开发Retrofit2+Rxjava2+okHttp 网络框架封装

2020-3-14 16:59:33

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索