此代码抛出一个“考虑的主题不存在”异常当我尝试在一个线程中使用它:如何获取Android线程ID?
android.os.Process.getThreadPriority((int) Thread.currentThread().getId()));
同上,如果我尝试使用Process.setThreadPriority,使用Java类线程ID。我也注意到这与调试器中显示的线程ID不匹配。如何获取Android特定的线程ID,以便使用此API?
此代码抛出一个“考虑的主题不存在”异常当我尝试在一个线程中使用它:如何获取Android线程ID?
android.os.Process.getThreadPriority((int) Thread.currentThread().getId()));
同上,如果我尝试使用Process.setThreadPriority,使用Java类线程ID。我也注意到这与调试器中显示的线程ID不匹配。如何获取Android特定的线程ID,以便使用此API?
android.os.Process.getThreadPriority(android.os.Process.myTid());
更多参考
http://developer.android.com/reference/android/os/Process.html#myTid()
谢谢,这肯定会得到当前线程的线程ID。 – Hieronymus
+1我欠你一个(当然这个答案是对的)。 – samosaris
FWIW android.os.Process.getThreadPriority(android.os.Process.myTid()); –
当我们使用线程。我们也想记录线程的细节来解决线程相关的问题。如下创建一个Utils类并使用它来记录线程签名。
public class Utils
{
public static long getThreadId()
{
Thread t = Thread.currentThread();
return t.getId();
}
public static String getThreadSignature()
{
Thread t = Thread.currentThread();
long l = t.getId();
String name = t.getName();
long p = t.getPriority();
String gname = t.getThreadGroup().getName();
return (name
+ ":(id)" + l
+ ":(priority)" + p
+ ":(group)" + gname);
}
public static void logThreadSignature()
{
Log.d("ThreadUtils", getThreadSignature());
}
public static void sleepForInSecs(int secs)
{
try
{
Thread.sleep(secs * 1000);
}
catch(InterruptedException x)
{
throw new RuntimeException("interrupted",x);
}
}
你检查是否'Process.myTid()'对你有什么用处? – harism