我创建了一个工作线程,
Thread thread= new Thread(runnable);
thread.start();
我在工作线程中打印它;
Log.d("SessionThread", Thread.currentThread().toString());
我得到以下输出;
主题[线程77416,5,主]
当我在我的活动主线程上尝试Thread.currentThread()
时。它打印如下。
主题[主要的,如图5所示,主]
现在我无法理解工作线程日志消息中第3个参数为main
的原因。
我需要了解这些论点意味着什么,我用Google搜索了但无法找到有关Thread.currentThread()
答案 0 :(得分:2)
Thread#toString()
返回"该线程的字符串表示形式,包括线程的名称,优先级和线程组"。
所以第一部分是线程的名称。该名称可以在创建时传递给Thread(String)
构造函数,也可以通过setName()
进行配置。如果未分配名称,则使用表单"Thread-" + n
的默认值。最初的帖子显然被称为"main"
,虽然我不确定这是标准化的。
第二部分是优先级,通过setPriority()
配置。
第三部分是线程组。这是通过Thread(ThreadGroup, ...)
构造函数设置的。如果未在创建线程时指定,则使用SecurityManager.getThreadGroup()
的值,该值默认为当前线程的线程组。这意味着,默认情况下,main
线程创建的任何线程也将与main
线程位于同一线程组中。
答案 1 :(得分:2)
Thread [Thread-77416,5,main] = " Thread [" + getName()+"," + getPriority()+"," + group.getName()+"]&#34 ;;
Thread-77416 线程的名称,如果没有设置系统将分配一个,程序员可以通过使用setName()或在创建线程示例的新实例时设置它
Thread t = new Thread(this, "This is Thread Name");
5是优先级表示NORM_PRIORITY优先级,这是默认优先级。线程具有以下优先级范围
/**
* The minimum priority that a thread can have.
*/
public final static int MIN_PRIORITY = 1;
/**
* The default priority that is assigned to a thread.
*/
public final static int NORM_PRIORITY = 5;
/**
* The maximum priority that a thread can have.
*/
public final static int MAX_PRIORITY = 10;
此线程所属的主要均值线程组名称
示例代码
public class ThreadExample implements Runnable {
ThreadExample() {
// main thread
Thread currThread = Thread.currentThread();
// thread created
Thread t = new Thread(this, "This is Thread Name");
System.out.println("Main thread = " + currThread);
System.out.println("Thread created = " + t);
// this will call run() function
t.start();
}
public void run() {
}
public static void main(String args[]) {
new ThreadExample();
}
}
<强>输出强>
主线程=线程[main,5,main]
Thread created = Thread [This is Thread Name,5,main]
答案 2 :(得分:1)
第三个参数是组名。如果你不提供Thread组,那么Thread组将从创建你的子线程的父线程中获取。在你的情况下它是main方法。
线程toString()方法。
public String toString() {
ThreadGroup group = getThreadGroup();
if (group != null) {
return "Thread[" + getName() + "," + getPriority() + "," +
group.getName() + "]";
} else {
return "Thread[" + getName() + "," + getPriority() + "," +
"" + "]";
}
}