Thread线程toString输出参数含义解析:为何工作线程第三个参数为main?
关于Thread.toString()输出三个参数的详解
嘿,我完全懂你的困惑——刚看到工作线程的第三个参数也是main的时候确实会懵,我来给你拆解清楚这三个参数到底是什么意思:
首先,Thread.currentThread().toString()的输出格式固定是:Thread[线程名称, 线程优先级, 线程组名称]
咱们逐个对应你的例子来解释:
第一个参数:线程名称
就是这个线程的标识名。主线程的名字固定是main,而你手动创建的工作线程如果没指定名字,系统会自动分配Thread-加数字编号的格式,比如你这里的Thread-77416。如果想自定义名字,可以用new Thread(runnable, "MyWorkerThread")来设置。第二个参数:线程优先级
这个代表线程的调度优先级,Android平台下范围是1到10,默认优先级是5。你看到的两个线程都是5,说明它们用的是默认优先级。优先级越高,线程获得CPU时间片的概率越大,但不是绝对的,只是调度器会优先考量。第三个参数:线程组名称
这就是你疑惑的核心点啦!线程组是用来批量管理线程的概念,当你在某个线程里创建新线程时,新线程默认会加入创建它的线程所在的线程组。你是在Activity的主线程里创建的工作线程,主线程本身属于main线程组,所以你的工作线程也被归入了main线程组,因此第三个参数显示为main。
如果想验证的话,可以手动创建一个新线程组再绑定工作线程,输出就会变化:
ThreadGroup myCustomGroup = new ThreadGroup("MyOwnGroup"); Thread thread = new Thread(myCustomGroup, runnable); thread.start();
这时候日志输出就会变成Thread[Thread-xxxx,5,MyOwnGroup]啦。
内容的提问来源于stack exchange,提问作者dev90
相关产品推荐
相关产品推荐

