【问题标题】:Understanding the output of println("${Thread.currentThread()}")了解 println("${Thread.currentThread()}") 的输出
【发布时间】:2020-12-25 22:55:05
【问题描述】:

当我打印一个协程线程时

println("${Thread.currentThread()}")

它会显示

Thread[DefaultDispatcher-worker-1 @coroutine#4,5,main]

我知道

  • DefaultDispatcher-worker-1 是当前运行的线程
  • @coroutine#4 是协程名称
  • 5 是它正在运行的线程的优先级
  • main——这是指什么?启动线程?

我不明白main 的用途,虽然我知道它指的是main 线程。

它是父线程吗? (我怀疑,当我尝试使用非主父线程时,它仍然显示main
是启动线程吗?
如果不是,那是什么?

【问题讨论】:

  • 会不会是启动它的函数名?
  • 不,该函数未命名为main。我在单元测试和Android代码中编写它,它没有main函数。

标签: multithreading kotlin coroutine


【解决方案1】:

通过检查ThreadtoString()函数,发现

    public String toString() {
        ThreadGroup group = getThreadGroup();
        if (group != null) {
            return "Thread[" + getName() + "," + getPriority() + "," +
                           group.getName() + "]";
        } else {
            return "Thread[" + getName() + "," + getPriority() + "," +
                            "" + "]";
        }
    }

好像是线程组名。

【讨论】:

  • main 作为线程组名,我觉得有点混乱,main 通常指的是主线程或者专门针对android 的UI 线程,在这种情况下它是一个默认的dispatcher,并且命名它有一个主线程!!
猜你喜欢
  • 1970-01-01
  • 2017-03-26
  • 2019-02-13
  • 2012-10-21
  • 2018-09-22
  • 2019-02-18
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多